Sin Text Scroller
Blitz3D Forums/Blitz3D Beginners Area/Sin Text Scroller
| ||
Neone can make a simple sin text scroller function using the text command that can be plugged into any program?? EDIT: Here is the latest version of the DEMO code cleaned up for ya. Global gfxBG, gfxflare Graphics3D 640, 480,32, 1 SetBuffer BackBuffer() TFormFilter 1 Color 0,0,0 MilliSecs = 0 n = 0 grlx = 1 grly = 1 grly2 = 641 grlxdir = 1 grly = 1 timex = 0 speedtimex = 8 Type t_bullet Field x,y Field speedx,speedy End Type Global bullet.t_bullet gfxBG=LoadImage("coolblue.png") gfxface = LoadImage("interface2.png") gfxgirl=LoadImage("amigagirl.png") gfxflare=LoadImage("ice.png") chnBackground=PlayMusic("z-tower.xm") While Not KeyHit(1) If KeyDown(203) Then timex = timex - 1 If KeyDown(205) Then timex = timex + 1 Cls DrawImage gfxBG, 1, 1 DrawImage gfxface, 1, 1 Text 50, 365, "NOW PLAYING" Text 50, 365, "NOW PLAYING" Text 30, 385, "TITLE: TOWER OF FLAMES": Text 30, 385, "TITLE: TOWER OF FLAMES" Text 30, 405, "ARTIST: Frederic Hahn": Text 30, 405, "ARTIST: Frederic Hahn" Text 30, 435, "UP/DOWN TO CHANGE SONG" Text 30, 450, "LEFT/RIGHT TO CHANGE TEXT SPEED" x=timex/10.0 bulletchance = Rnd(0,10): If bulletchance = 5 Then bullet.t_bullet = New t_bullet: bullet\x = Rnd(0,200): bullet\y = Rnd(0,10): bullet\speedx = Rnd(1,3): bullet\speedy = Rnd(1,3) bulletchance2 = Rnd(0,100): If bulletchance = 10 Then bullet.t_bullet = New t_bullet: bullet\x = Rnd(0,200): bullet\y = Rnd(0,10): bullet\speedx = Rnd(1,3): bullet\speedy = Rnd(1,3) updategame() rendergame() If grlxdir = 1 Then grlx = grlx + 1 If grlxdir = 2 Then grlx = grlx - 1 If grlx = 100 Then grlxdir = 2 If grlx = 1 Then grlxdir = 1 SinScroll (" ................................... CodeD aka (DJ) Krazy K Presents Amiga Tribute Vol. 1 ... Press up/down to change songs ... Code: CodeD, Jeppe Neilson (SinScroll) Gfx: FrogDot (thx for the babe!), CodeD ... Mods for Charity ... your donations help children!!! ... Visit http://sites.gwala.net/tormented/amiga for more info and to order the CD ... greetings to: Ckob, Lenn, Noel Cower, JFK, DJ SeeNSay, LizardKing, FutureCrew, Paradox, Mark Sibly & The Blitz Basic Crew, The Anonymous Modder ... Gotta have mod?? Amiga Tribute Vol. 2 coming soon!! Cybernoid 3D coming soon!! Quality apps like this and more from CrapSoft and Evolved Dev Studios ............................ ", -x, 135, timex/10.0) SinScroll (" ................................... CodeD aka (DJ) Krazy K Presents Amiga Tribute Vol. 1 ... Press up/down to change songs ... Code: CodeD, Jeppe Neilson (SinScroll) Gfx: FrogDot (thx for the babe!), CodeD ... Mods for Charity ... your donations help children!!! ... Visit http://sites.gwala.net/tormented/amiga for more info and to order the CD ... greetings to: Ckob, Lenn, Noel Cower, JFK, DJ SeeNSay, LizardKing, FutureCrew, Paradox, Mark Sibly & The Blitz Basic Crew, The Anonymous Modder ... Gotta have mod?? Amiga Tribute Vol. 2 coming soon!! Cybernoid 3D coming soon!! Quality apps like this and more from CrapSoft and Evolved Dev Studios ............................ ", -x-1, 135, timex/10.0) DrawImage gfxgirl, grlx, grly DrawImage gfxgirl, grlx, grly2 Flip If timex < 0 Then timex = 0 timex = timex + speedtimex If KeyDown(203) Then speedtimex = speedtimex - 1 If KeyDown(205) Then speedtimex = speedtimex + 1 Wend Function updategame() For bullet.t_bullet = Each t_bullet bullet\x = bullet\x + bullet\speedx bullet\y = bullet\y + bullet\speedy Next End Function Function rendergame() For bullet.t_bullet = Each t_bullet DrawImage gfxflare,bullet\x,bullet\y Next End Function Function SinScroll(txt$,x,y,am,amp=50,per=20,d=10) For n=1 To Len(txt$) Text x+xx,y+Sin(am+n*per)*amp,Mid$(txt$,n,1) xx=xx+d Next End Function |
| ||
Hi Folks, I'm in work so can't do it for you, but all you need to do is to define a lookup table holding the y-pos for each x-pos on the screen. Create a function that will take the character and the x-pos, and place the character at the x-pos and y-pos taken from the table. Does that help? Oh, yes, before anyone says you don't need to use a lookup table as it's just as quick to calculate it in real time and faster still to do it telepathically. Later, Jes |
| ||
Try this:Graphics 800,600 SetBuffer BackBuffer() Repeat Cls x=MilliSecs()/10.0 Mod 800 SinScroll("A nice sinus scroller, just a small example how this is done :)",800-x,300,MilliSecs()/10.0) SinScroll("A nice sinus scroller, just a small example how this is done :)",800-x-800,300,MilliSecs()/10.0) Flip Until KeyDown(1) End Function SinScroll(txt$,x,y,am,amp=50,per=20,d=10) For n=1 To Len(txt$) Text x+xx,y+Sin(am+n*per)*amp,Mid$(txt$,n,1) xx=xx+d Next End Function |
| ||
That's nifty!! Thanks!! |
| ||
Could you explain all those variables though in the function call? I know amp is like amplitude txt$, and x,y but not sure about the others. Also, is there a way when it's done reading the line to loop back through it without clearing out the old line entirely?? Also, can you show how to set horizontal limits like if you want it to show the sinscroll from x:1 to x: 50 only??? |
| ||
There are a sine-scroller on my website: www.blitzbasic.no Check put the DYCP-scroller also. They're made a long time ago but they work nice and are very simple to understand.. (...and commented.) |
| ||
Thanks Wedoe those are pretty good. Jeppe, still there?? |
| ||
Function SinScroll(txt$,x,y,am,amp=20,per=20,d=10) .wrap For n=1 To Len(txt$) If Len(txt$) = "^" Then Text x+xx,y+Sin(am+n*per)*amp, " ": Goto wrap Text x+xx,y+Sin(am+n*per)*amp,Mid$(txt$,n,1) xx=xx+d Next End Function here is what i've done to the sin scroll function, it wraps the text but, the problem is when it gets to the end of the text, the x position moves back to the beginning i.e. the far left of the screen, so it jumps instead of actually continuing where it left off. and i probably shouldn't use a goto... |
| ||
anybody? |
| ||
So what would a holy text scroller look like? |
| ||
holy? |
| ||
Well, there is a sin text scroller, so there must be a holy text scroller. Right? Maybe something like this?for x = 0 to 800 y = holy(x) if y < 0 goto hell else goto heaven end if next Of course, this is only an example. Normally you would want to avoid the use of goto. |
| ||
Ooooooooh |
| ||
I figured out what my problem was. I need to recalculate the mod value according to the length of the text that's being scrolled. But, how do I calculate the mod value versus the text length?? (you can see I'm working on a slightly modified version of the bullet code posted by Semar in this forum for the ice flakes) pic of demo in action here demo in action ; LoadImage and DrawImage example ; Declare a variable to hold the graphic file handle Global gfxBG, gfxflare ; Set a graphics mode Graphics3D 640, 480,32, 1 ; Set drawing operations for double buffering SetBuffer BackBuffer() TFormFilter 1 Color 0,0,0 SeedRnd MilliSecs() grlx = 1 grlxdir = 1 grly = 1 Type t_bullet Field x,y Field speedx,speedy End Type Global bullet.t_bullet ; Load the image and assign its file handle to the variable ; - This assumes you have a graphic called player.bmp in the ; same folder as this source code gfxBG=LoadImage("coolblue.png") gfxgirl=LoadImage("amigagirl.png") gfxflare=LoadImage("ice.png") chnBackground=PlayMusic("z-tower.xm") ; Let's do a loop where the graphic is drawn wherever the ; mouse is pointing. ESC will exit. While Not KeyHit(1) ; clear the screen Cls DrawImage gfxBG, 1, 1 x=MilliSecs()/10.0 Mod 2400 bulletchance = Rnd(0,10): If bulletchance = 5 Then bullet.t_bullet = New t_bullet: bullet\x = Rnd(0,200): bullet\y = Rnd(0,10): bullet\speedx = Rnd(1,3): bullet\speedy = Rnd(1,3) bulletchance2 = Rnd(0,100): If bulletchance = 10 Then bullet.t_bullet = New t_bullet: bullet\x = Rnd(0,200): bullet\y = Rnd(0,10): bullet\speedx = Rnd(1,3): bullet\speedy = Rnd(1,3) updategame() rendergame() ;x=MilliSecs()/10.0 Mod 800 ;If grlxdir = 1 Then grlx = grlx - 1 ;If grlxdir = 2 Then grlx = grlx + 1 ;If grlx = -639 Then grlxdir = 2 ;If grlx = 1 Then grlxdir = 1 SinScroll (" ............... CodeD aka (DJ) Krazy K Presents Amiga Tribute Vol. 1 ... Press up/down to change songs ... Code: CodeD, Jeppe Neilson (SinScroll) Gfx: FrogDot (thx for the babe!), CodeD ... Mods for Charity ... your donations help children!!! ... Visit http://sites.gwala.net/tormented/amiga for more info and to order the CD ... greetings to: Ckob, Lenn, Noel Cower, JFK, DJ SeeNSay, LizardKing, FutureCrew, Paradox, Mark Sibly & The Blitz Basic Crew, The Anonymous Modder ... Gotta have mod?? Amiga Tribute Vol. 2 coming soon!! Cybernoid 3D coming soon!! Quality apps like this and more from CrapSoft and Evolved Dev Studios ............................ ", -x-2400, 300, MilliSecs()/10.0) SinScroll (" ............... CodeD aka (DJ) Krazy K Presents Amiga Tribute Vol. 1 ... Press up/down to change songs ... Code: CodeD, Jeppe Neilson (SinScroll) Gfx: FrogDot (thx for the babe!), CodeD ... Mods for Charity ... your donations help children!!! ... Visit http://sites.gwala.net/tormented/amiga for more info and to order the CD ... greetings to: Ckob, Lenn, Noel Cower, JFK, DJ SeeNSay, LizardKing, FutureCrew, Paradox, Mark Sibly & The Blitz Basic Crew, The Anonymous Modder ... Gotta have mod?? Amiga Tribute Vol. 2 coming soon!! Cybernoid 3D coming soon!! Quality apps like this and more from CrapSoft and Evolved Dev Studios ............................ ", -x-1-2400, 300, MilliSecs()/10.0) DrawImage gfxgirl, grlx, 1 ;SinScroll (" ............... CodeD aka (DJ) Krazy K Presents Amiga Tribute Vol. 1 ... Press up/down to change songs ... Code: CodeD, Jeppe Neilson (SinScroll) Gfx: FrogDot (thx for the babe!), CodeD ... Mods for Charity ... your donations help children!!! ... Visit http://sites.gwala.net/tormented/amiga for more info and to order the CD ... greetings to: Ckob, Lenn, Noel Cower, JFK, DJ SeeNSay, LizardKing, FutureCrew, Paradox, Mark Sibly & The Blitz Basic Crew, The Anonymous Modder ... Gotta have mod?? Amiga Tribute Vol. 2 coming soon!! Cybernoid 3D coming soon!! Quality apps like this and more from CrapSoft and Evolved Dev Studios ............................ ", 800-x, 300, MilliSecs()/10.0) ;SinScroll (" ............... CodeD aka (DJ) Krazy K Presents Amiga Tribute Vol. 1 ... Press up/down to change songs ... Code: CodeD, Jeppe Neilson (SinScroll) Gfx: FrogDot (thx for the babe!), CodeD ... Mods for Charity ... your donations help children!!! ... Visit http://sites.gwala.net/tormented/amiga for more info and to order the CD ... greetings to: Ckob, Lenn, Noel Cower, JFK, DJ SeeNSay, LizardKing, FutureCrew, Paradox, Mark Sibly & The Blitz Basic Crew, The Anonymous Modder ... Gotta have mod?? Amiga Tribute Vol. 2 coming soon!! Cybernoid 3D coming soon!! Quality apps like this and more from CrapSoft and Evolved Dev Studios ............................ ", 800-x-800, 300, MilliSecs()/10.0) Flip ; flip the image into view and clear the back buffer Wend ;=================================== Function updategame() ;=================================== For bullet.t_bullet = Each t_bullet bullet\x = bullet\x + bullet\speedx bullet\y = bullet\y + bullet\speedy Next End Function ;=================================== Function rendergame() ;=================================== For bullet.t_bullet = Each t_bullet ;the bullet image is a global image called image_bullet DrawImage gfxflare,bullet\x,bullet\y Next End Function Function SinScroll(txt$,x,y,am,amp=50,per=20,d=10) For n=1 To Len(txt$) Text x+xx,y+Sin(am+n*per)*amp,Mid$(txt$,n,1) xx=xx+d Next End Function |
| ||
Well, I know I'm doing something wrong and it has to do with the Millisecs() So I came up with a shoddy replacement that lets you control speed and direction using the left and right arrow keys. Not, what I wanted to do... ; LoadImage and DrawImage example ; Declare a variable to hold the graphic file handle Global gfxBG, gfxflare ; Set a graphics mode Graphics3D 640, 480,32, 1 ; Set drawing operations for double buffering SetBuffer BackBuffer() TFormFilter 1 Color 0,0,0 MilliSecs = 0 ;SeedRnd MilliSecs() n = 0 grlx = 1 grlxdir = 1 grly = 1 timex = 0 speedtimex = 8 Type t_bullet Field x,y Field speedx,speedy End Type Global bullet.t_bullet ; Load the image and assign its file handle to the variable ; - This assumes you have a graphic called player.bmp in the ; same folder as this source code gfxBG=LoadImage("coolblue.png") gfxgirl=LoadImage("amigagirl.png") gfxflare=LoadImage("ice.png") chnBackground=PlayMusic("z-tower.xm") ; Let's do a loop where the graphic is drawn wherever the ; mouse is pointing. ESC will exit. While Not KeyHit(1) If KeyDown(203) Then timex = timex - 1 If KeyDown(205) Then timex = timex + 1 ; clear the screen Cls DrawImage gfxBG, 1, 1 ;mod value gives you amount of time to scroll before looping text x=timex/10.0 ;Mod 800 bulletchance = Rnd(0,10): If bulletchance = 5 Then bullet.t_bullet = New t_bullet: bullet\x = Rnd(0,200): bullet\y = Rnd(0,10): bullet\speedx = Rnd(1,3): bullet\speedy = Rnd(1,3) bulletchance2 = Rnd(0,100): If bulletchance = 10 Then bullet.t_bullet = New t_bullet: bullet\x = Rnd(0,200): bullet\y = Rnd(0,10): bullet\speedx = Rnd(1,3): bullet\speedy = Rnd(1,3) updategame() rendergame() ;x=MilliSecs()/10.0 Mod 800 ;If grlxdir = 1 Then grlx = grlx - 1 ;If grlxdir = 2 Then grlx = grlx + 1 ;If grlx = -639 Then grlxdir = 2 ;If grlx = 1 Then grlxdir = 1 SinScroll (" ................................... CodeD aka (DJ) Krazy K Presents Amiga Tribute Vol. 1 ... Press up/down to change songs ... Code: CodeD, Jeppe Neilson (SinScroll) Gfx: FrogDot (thx for the babe!), CodeD ... Mods for Charity ... your donations help children!!! ... Visit http://sites.gwala.net/tormented/amiga for more info and to order the CD ... greetings to: Ckob, Lenn, Noel Cower, JFK, DJ SeeNSay, LizardKing, FutureCrew, Paradox, Mark Sibly & The Blitz Basic Crew, The Anonymous Modder ... Gotta have mod?? Amiga Tribute Vol. 2 coming soon!! Cybernoid 3D coming soon!! Quality apps like this and more from CrapSoft and Evolved Dev Studios ............................ ", -x, 300, timex/10.0) SinScroll (" ................................... CodeD aka (DJ) Krazy K Presents Amiga Tribute Vol. 1 ... Press up/down to change songs ... Code: CodeD, Jeppe Neilson (SinScroll) Gfx: FrogDot (thx for the babe!), CodeD ... Mods for Charity ... your donations help children!!! ... Visit http://sites.gwala.net/tormented/amiga for more info and to order the CD ... greetings to: Ckob, Lenn, Noel Cower, JFK, DJ SeeNSay, LizardKing, FutureCrew, Paradox, Mark Sibly & The Blitz Basic Crew, The Anonymous Modder ... Gotta have mod?? Amiga Tribute Vol. 2 coming soon!! Cybernoid 3D coming soon!! Quality apps like this and more from CrapSoft and Evolved Dev Studios ............................ ", -x-1, 300, timex/10.0) DrawImage gfxgirl, grlx, 1 ;SinScroll (" ............... CodeD aka (DJ) Krazy K Presents Amiga Tribute Vol. 1 ... Press up/down to change songs ... Code: CodeD, Jeppe Neilson (SinScroll) Gfx: FrogDot (thx for the babe!), CodeD ... Mods for Charity ... your donations help children!!! ... Visit http://sites.gwala.net/tormented/amiga for more info and to order the CD ... greetings to: Ckob, Lenn, Noel Cower, JFK, DJ SeeNSay, LizardKing, FutureCrew, Paradox, Mark Sibly & The Blitz Basic Crew, The Anonymous Modder ... Gotta have mod?? Amiga Tribute Vol. 2 coming soon!! Cybernoid 3D coming soon!! Quality apps like this and more from CrapSoft and Evolved Dev Studios ............................ ", 800-x, 300, MilliSecs()/10.0) ;SinScroll (" ............... CodeD aka (DJ) Krazy K Presents Amiga Tribute Vol. 1 ... Press up/down to change songs ... Code: CodeD, Jeppe Neilson (SinScroll) Gfx: FrogDot (thx for the babe!), CodeD ... Mods for Charity ... your donations help children!!! ... Visit http://sites.gwala.net/tormented/amiga for more info and to order the CD ... greetings to: Ckob, Lenn, Noel Cower, JFK, DJ SeeNSay, LizardKing, FutureCrew, Paradox, Mark Sibly & The Blitz Basic Crew, The Anonymous Modder ... Gotta have mod?? Amiga Tribute Vol. 2 coming soon!! Cybernoid 3D coming soon!! Quality apps like this and more from CrapSoft and Evolved Dev Studios ............................ ", 800-x-800, 300, MilliSecs()/10.0) Flip ; flip the image into view and clear the back buffer If timex < 0 Then timex = 0 timex = timex + speedtimex If KeyDown(203) Then speedtimex = speedtimex - 1 If KeyDown(205) Then speedtimex = speedtimex + 1 Wend ;=================================== Function updategame() ;=================================== For bullet.t_bullet = Each t_bullet bullet\x = bullet\x + bullet\speedx bullet\y = bullet\y + bullet\speedy Next End Function ;=================================== Function rendergame() ;=================================== For bullet.t_bullet = Each t_bullet ;the bullet image is a global image called image_bullet DrawImage gfxflare,bullet\x,bullet\y Next End Function Function SinScroll(txt$,x,y,am,amp=50,per=20,d=10) For n=1 To Len(txt$) Text x+xx,y+Sin(am+n*per)*amp,Mid$(txt$,n,1) xx=xx+d Next End Function |
| ||
@Wedoe - Remember the C64 and DYCP-scrollers <Memories> @CodeD - Looking way smart mate :) |
| ||
@Mikey F: Take a look at this: http://www.blitzbasic.no/div/nostalgia.zip |
| ||
@Wedoe - Remember it well buddy :) -Top Nostalgic Work mate - Hail to the C64 / 80's @CodeD - Hows progress mate? |
| ||
Edit: See my first post in this thread for the latest version of the demo code (cleaned up) Yeah, the Nostalgic demo is cool. I'm almost done on the demo which will accompany the new album Amiga Tribute Vol. 1, here is a pic of the demo in action Here is what it does so far: Snowflakes fly around and continually respawn the girl moves left and back to right about 100 pixels each way. Mod music plays Sin Text scroll with user controlled speed/direction To Do: -Let user cycle through mods to play (super easy) -Do something with the background (like a pallete cycle or something) -Make the snowflakes rotate, will have to prerender the rotations and store into memory and cycle through rotation frames with an x = x + 1 type algorithm/check (medium diff) Basically, one of the things that makes a demo visually exciting is movement so, that's what I'm going for. here is the album cover ![]() |
| ||
Feel free to visit my site matey, as we love all things retro, Amiga / C64 and Graphics Demos / Games. That looks real tasty CodeD, Brilliant work :) -Mikey F aka Clyde :) |
| ||
Thanks I'll give it a look! |
| ||
Cheers mate, all the best with the project! Cool site btw :) |
| ||
Finished Final Code is here: http://www.blitzbasic.com/codearcs/codearcs.php?code=1172 Email me if you want the media, it's a 501kb zip file. |