einen string auslesen?

Previous topic - Next topic

knut

wie mach ich das?

es geht um folgendes.

ich möchte eine punktzahl, als einen score mit bildern darstellen.

also sagen wir die punktzahl beträgt  46

dann hat die 4 ein seperates bild und die 6 ein seperates bild.

will einen score im comicstil machen.

D2O

#1
Hi, das musst Du nicht so kompliziert machen.
GLB ladet eh schon Bitmap fonts, erstell Dir einen Font mit dem in der IDE integrierten Tool
und bearbeite das ganze mit einem Paint Programm.
So kannst Du das ganze ganz normal als Font nützen.

Oder Du lädst das ganze als Tileset mit loadanim.
Dann sprichst Du die Frames einfach beim zeichnen direct an, frame 0 = zahl 0, frame 1 = zahl 1.

Ich würde aber zur ersten variante zurückgreifen.
Die Grafik musst Du eh erstellen.

Ich mach mal schnell eine Code beispiel, bis gleich.
Edit:
So, hier das beispiel und der font.
Code (glbasic) Select
LOADFONT "comicfont.png",0

SETFONT 0

a = 500

LOADANIM "comicfont.png",0,36,43

WHILE TRUE
MOUSESTATE mx,my,b1,b2

PRINT a,10,10


DRAWANIM 0,53,mx,my
DRAWANIM 0,48,mx+36,my
DRAWANIM 0,48,mx+72,my

SHOWSCREEN
WEND

I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

knut

#2
Code (glbasic) Select
FUNCTION graphtxt: txt$, x, y
FOR i = 1 TO LEN(txt$)
asciicode = ASC(MID$(txt$, i, 1))
IF asciicode > 47 AND asciicode < 58
fontframe = asciicode-48
ENDIF
DRAWANIM 0,fontframe, x, y
x=x+32
NEXT
ENDFUNCTION


irgendwie zeichnet es aber immer das selbe zeichen.
also statt der zahl 59 steht dann eben 99 da.
mmm


edit

so funktioniert es, kann mir das jemand bei dem
Code (glbasic) Select
FOR i = 0 TO LEN(txt$)-1 erklären?
Code (glbasic) Select

FUNCTION graphtxt: txt$, x, y
FOR i = 0 TO LEN(txt$)-1
buchstabencode = ASC(MID$(txt$, i, 1))
IF buchstabencode > 47 AND buchstabencode < 58
fontframe = buchstabencode-48
ENDIF
DRAWANIM 0,fontframe, x, y
x=x+32
NEXT
ENDFUNCTION




D2O

Len gibt dir den  wert 5 zurück( 1,2,3,4,5)

Du fängst aber mit I = 0 an zu zählen (0,1,2,3,4,5) das sind 6 zahlen/schleifen und nicht 5.

Bei drawanim fängt alles bei 0 an, daher Len()-1.

Sorrry, bin noch nicht ganz wach ;)
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Schranz0r

schwachsinn... :)

einfach:

Code (glbasic) Select
LOADFONT "comicfont.png", 1

SETFONT 1

Score = 1234567890



WHILE TRUE

PRINT Score,10,10


SHOWSCREEN
WEND
END

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

D2O

genau Schranz0r, das ist die einfachste und bessere Methode.
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Schranz0r

Ausser er will alle Buchstaben einzeln bewegen.. dann muss er es natürlich anders machen :D
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello

Code (glbasic) Select

score$ = score
FOR i = 0 to LEN(score$)-1
   char$ = MID$(score$, i,1)
   PRINT char$, i*16, (SIN(i*180)+1)*64
NEXT
SHOWSCREEN
MOUSEWAIT


Schranz0r

Quote from: Kitty Hello on 2008-Aug-04
Code (glbasic) Select

score$ = score
FOR i = 0 to LEN(score$)-1
   char$ = MID$(score$, i,1)
   PRINT char$, i*16, (SIN(i*180)+1)*64
NEXT
SHOWSCREEN
MOUSEWAIT



Genau ^^
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard