ich habe versucht ein kleines Spiel zu programmieren, ähnlich wie Pokemon auf dem Gameboy, nun habe ich eine Spielfigur die sich immer in der Mitte des Bildschirms befindet und durch die Pfeiltasten schiebt man den Hintergrund bzw. die Objekte hin und her dazu noch eine kleine Gang Animation und man denkt die Figur würde tatsächlich laufen, aber nun mein Problem das Spielfeld ist in 32X32 große Felder aufgeteilt nun wollte ich eine Wand einfügen in form eines einfachen 32X32 Sprites doch die Spielfigur läuft einfach drüber hinweg. Ich habe schon einiges mit SpriteCollision() versucht aber leider ohne Erfolg, die Fígur sollte also mehr oder weniger selbstständig Hindernisse erkennen, damit ich nicht jedes überprüfen muss wenn die Figur einen Schritt gemacht hat.
Code: Alles auswählen
PlayerImage = 1
Repeat
FlipBuffers()
ClearScreen(0,0,0)
ExamineKeyboard()
;Allgemeinerhintergrund erstellen ist immer vorhanden also "unter" den Objekten
ScreenWidth = #SW
ScreenHeight = #SH
For x=0 To ScreenWidth Step 32
For y=0 To ScreenHeight Step 32
DisplayTransparentSprite(1001, x, y) ;1001=Sandhintergrund
Next
Next
;Objekte darstellen
Gosub Objekte
;Spieler darstellen und bewegen
Gosub MovePlayer
Until QuitGame = 1 Or KeyboardReleased(#PB_Key_Escape)
End
Objekte:
DisplayTransparentSprite(1002, PlayerX+32*5+16, PlayerY+32);1002 = kleine Felswand bzw. Mauer
Return
MovePlayer:
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Down)
If PlayerImage = 1
PlayerImage = 2
Else
PlayerImage = 1
EndIf
Delay(MovePlayerDelay)
ExamineKeyboard();nochmalige Überprüfung zum unterscheiden zwischen gehen und drehen
If KeyboardPushed(#PB_Key_Down)
PlayerY-32
EndIf
ElseIf KeyboardPushed(#PB_Key_Up)
If PlayerImage = 6
PlayerImage = 7
Else
PlayerImage = 6
EndIf
Delay(MovePlayerDelay)
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Up)
PlayerY+32
EndIf
ElseIf KeyboardPushed(#PB_Key_Left)
If PlayerImage = 11
PlayerImage = 12
Else
PlayerImage = 11
EndIf
Delay(MovePlayerDelay)
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
PlayerX+32
EndIf
ElseIf KeyboardPushed(#PB_Key_Right)
If PlayerImage = 14
PlayerImage = 15
Else
PlayerImage = 14
EndIf
Delay(MovePlayerDelay)
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Right)
PlayerX-32
EndIf
EndIf
DisplayTransparentSprite(PlayerImage+100, (#SW-32)/2, (#SH-32)/2);stellt Spielerimage dar immer in der Mitte vom Screen
;ab hier kommen nur noch die Sachen für die Animation
If PlayerImage = 5
PlayerImage = 1
ElseIf PlayerImage = 4
PlayerImage = 3
Delay(MovePlayerDelay)
ElseIf PlayerImage = 2
PlayerImage = 4
ElseIf PlayerImage = 3
PlayerImage = 5
EndIf
If PlayerImage = 9
PlayerImage = 6
ElseIf PlayerImage = 8
PlayerImage = 7
Delay(MovePlayerDelay)
ElseIf PlayerImage = 2
PlayerImage = 8
ElseIf PlayerImage = 7
PlayerImage = 9
EndIf
If PlayerImage = 13
PlayerImage = 11
Delay(MovePlayerDelay)
ElseIf PlayerImage = 12
PlayerImage = 13
EndIf
If PlayerImage = 16
PlayerImage = 14
Delay(MovePlayerDelay)
ElseIf PlayerImage = 15
PlayerImage = 16
EndIf
Return