writing text, letter by letter
Blitz3D Forums/Blitz3D Beginners Area/writing text, letter by letter
| ||
Is it possible to "copy" a letter from a string (with a sentence) to another string (an empty one) The effect I want to achieve, is that of the Shining Force games. Can I use REPLACE or something else? |
| ||
a$="Hello there" for n=1 to len(a) print mid(a,n,1) next |
| ||
also you could work out each string in advance before displaying it to see if it fits the line, and if not draw it to the next line. |
| ||
Rob, thanks for your effort,... but this will only display text in a "vertical way", and I would like the text to be displayed in a horizontal way Anyway, this is what I've come up with: Graphics 640,480,0,1 w_line$=("GREETINGS ADVENTURER, WHAT WOULD YOU LIKE TO DO ?") textlength=Len(w_line$)+1 p=1 Repeat If MilliSecs() > wait + 100 Then wait=MilliSecs() setchar$ = Mid$(w_line$,p,1) Locate q,10 Write setchar$ p=p+1 q=q+8 EndIf Until p>textlength I admit it's a bit crude, and it only works with the standard blitz font at the moment. And Sinu's idea is very good! :D I'll put that one in, too Thanks |
| ||
Have you seen the text command? |
| ||
Thanks Rob, it's less hassle, heh? Graphics 640,480,0,1 w_line$=("GREETINGS ADVENTURER, WHAT WOULD YOU LIKE TO DO ?") textlength=Len(w_line$)+1 p=1 Repeat If MilliSecs() > wait + 100 Then wait=MilliSecs() setchar$ = Mid$(w_line$,p,1) text q,10,setchar$ p=p+1 q=q+8 EndIf Until p>textlength thanks |
| ||
An alternative so you don't have exact spacing would be...Graphics 640,480,0,1 w_line$=("GREETINGS ADVENTURER, WHAT WOULD YOU LIKE TO DO ?") textlength=Len(w_line$)+1 p=1 Repeat If MilliSecs() > wait + 100 Then wait=MilliSecs() text 0,10,left$(w_line$,p) p=p+1 EndIf Until p>textlength |
| ||
Wow Rob, the code is getting smaller by the minute :D :D thank you for your input(it works like a charm) |
| ||
Well... If you want small...w_line$="GREETINGS ADVENTURER, WHAT WOULD YOU LIKE TO DO ?" for n=1 to len(w_line) text 0,10,left(w_line,n) delay 100 next |
| ||
Repeat print "I am not worthy" Forever ;) |
| ||
Or indeed if you want to be clever... This is a tidy way of doing it so you don't need to create loads of loops, just create a function to pass the x,y and text into it, then just use type_text instead of text. Graphics 640,480 type_text(0,10,"GREETINGS ADVENTURER, WHAT WOULD YOU LIKE TO DO ?" ) Type_text(50,100,"Anything?") type_text(0,200,"This is a much better way of doing it!") End Function type_text(x,y,t$) For n=1 To Len(t) Text x,y,Left(t,n) Delay 100 Next End Function |
| ||
Yes you're right. That's even better. FYI, [rant] The function-part always gave me headaches. I've used (and learned) DIV now for about 3 years. DIV uses processes instead of functions. Both programs work differently, although there are quite a few similarities. I've Blitz now for about 2 months, and I've to "unlearn" some of DIV's habits. (like the repeat..until) [/rant] |
| ||
repeat..until is really handy, as is while...wend. You've just got to use the right loop for the right job. If you know the exact beginning and end of a loop a for..next is probably the way to go. |