| ALWIM 
 
  
 Anmeldungsdatum: 08.08.2006
 Beiträge: 1048
 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
 |  |