ALWIM
Anmeldungsdatum: 08.08.2006 Beiträge: 1047 Wohnort: Niederbayern
|
Verfasst am: 13.06.2020, 17:52 Titel: Gelöst: Probleme mit Put und Get bei Sprites |
|
|
Ich habe mir ein paar Bilddateien erstellt für eine Spielfigur die man mit den Pfeil-Tasten bewegen kann. Funktioniert so weit! Nun zum Problem:
Beim geposteten Quellcode, löscht der mir die Figur in der Ausgangsstellung nicht, wenn ich sie mit den Pfeiltasten bewege. Es bleibt immer die Figur an der Stelle 50, 50 sichtbar. Danach löscht der die Figur so wie es sein soll.
An Position 0, 0 funktioniert alles ohne Probleme! Figur wird gelöscht. Was mache ich falsch? Wo ist der Denkfehler? Es sind 8 Bilder, wo die Figur nach links und 8 nach rechts sieht. Und bis jetzt 3 Bilder jeweils für nach oben und nach unten. Ich komme nicht weiter...
Quellcode
Code: | #INCLUDE ONCE "WINDOWS.BI"
SCREENRES 640, 320, 32
DIM AS INTEGER X, Y, i, l, r, o, u
DIM AS INTEGER altX, altY
DIM SHARED AS ANY PTR Spritepuffer(0 TO 22), hg
FOR i = 0 TO 22
Spritepuffer(i) = IMAGECREATE(15, 38)
BLOAD (EXEPATH & "\" & i & ".bmp", Spritepuffer(i))
NEXT
hg = IMAGECREATE(15, 38)
X = 50
Y = 50
altx = 0 ' <----- muss 50 sein!
alty = 0 ' <----- muss 50 sein!
l = 1
r = 9
o = 17
u = 20
' nach links &h4B
' nach rechts h4D
' nach oben &h48
' nach unten &h50
GET (50, 50)-step(15, 38), hg
PUT (50, 50), Spritepuffer(r), TRANS
DO
IF MULTIKEY(&h4B) THEN
IF x > 1 THEN X -= 1
l += 1
IF l > 8 THEN l = 1
SCREENLOCK
PUT (altX, altY), hg, PSET
GET (X, Y)-step(15, 38), hg
PUT (X, Y), Spritepuffer(l), TRANS
SCREENUNLOCK
altX = X
altY = Y
r = l+8
END IF
IF MULTIKEY(&h4D) THEN
IF x < 625 THEN X += 1
r += 1
IF r > 16 THEN r = 9
SCREENLOCK
PUT (altX, altY), hg, PSET
GET (X, Y)-step(15, 38), hg
PUT (X, Y), Spritepuffer(r), TRANS
SCREENUNLOCK
altX = X
altY = Y
l = r-8
END IF
IF MULTIKEY(&h48) THEN
IF y > 0 THEN Y -= 1
o -= 1
IF o < 17 THEN o = 19
SCREENLOCK
PUT (altX, altY), hg, PSET
GET (X, Y)-step(15, 38), hg
PUT (X, Y), Spritepuffer(o), TRANS
SCREENUNLOCK
altX = X
altY = Y
u = o+3
END IF
IF MULTIKEY(&h50) THEN
IF y < 282 THEN Y += 1
u += 1
IF u > 22 THEN u = 20
SCREENLOCK
PUT (altX, altY), hg, PSET
GET (X, Y)-step(15, 38), hg
PUT (X, Y), Spritepuffer(u), TRANS
SCREENUNLOCK
altX = X
altY = Y
o = u-3
END IF
IF MULTIKEY(&h01) THEN EXIT DO
SLEEP 1
LOOP
FOR i = 0 TO 22
IMAGEDESTROY (Spritepuffer(i))
NEXT
IMAGEDESTROY hg
SLEEP
END
|
Edit:
Habe es selber hinbekommen! Nur ein kleiner Denkfehler... _________________ SHELL SHUTDOWN -s -t 05 |
|