ich bin gerade dabei ein kleines Spiel zu programmieren, und bin auf folgendes Problem gestoßen:
Code: Alles auswählen
Global quit.i = 0
Global PlayerX = 500
Global PlayerY = 500
Global FG.i
Global MaxHeight.i = 200/20
Structure Koordinaten
X.i
Hoehe.i
EndStructure
Global NewList Blocks.Koordinaten()
For n = 0 To 1600 Step 20
AddElement(Blocks())
Blocks()\X = n
Blocks()\Hoehe = Random(MaxHeight)*20+400
Next
Procedure Fehlerbehandlung(Ergebnis.i, Text.s)
If Ergebnis = 0
MessageRequester("Fehler", Text, #PB_MessageRequester_Ok)
End
EndIf
EndProcedure
FehlerBehandlung(InitSprite(), "Initialisieren der Sprites fehlgeschlagen!")
FehlerBehandlung(InitKeyboard(), "Initialisieren der Tastatur fehlgeschlagen!")
FehlerBehandlung(OpenScreen(1600, 900, 32, "FullScreen"), "Öffen des Vollbilds fehlgeschlagen!")
Procedure keys()
ExamineKeyboard()
If KeyboardReleased(#PB_Key_Escape)
quit = #True
EndIf
If KeyboardPushed(#PB_Key_D)
PlayerX + 5
ElseIf KeyboardPushed(#PB_Key_A)
PlayerX - 5
EndIf
If KeyboardPushed(#PB_Key_W)
FG = -5
EndIf
EndProcedure
Procedure drawPlayer()
PlayerY + FG
If PlayerY > 800
FG = 0
PlayerY = 800
Else
FG + 1
EndIf
If PlayerX > 1580
PlayerX = 1580
ElseIf PlayerX < 0
PlayerX = 0
EndIf
CreateSprite(1,20,20)
StartDrawing(SpriteOutput(1))
Box(0,0,20,20,RGB(0,150,0))
StopDrawing()
StartDrawing(ScreenOutput())
Box(0,0, 1600, 900, RGB(225,0,0))
StopDrawing()
CreateSprite(0, 21, 21)
StartDrawing(SpriteOutput(0))
Circle(10, 10, 10, RGB(225,255,0))
StopDrawing()
ForEach Blocks()
For n = Blocks()\Hoehe To 900 Step 20
DisplaySprite(1,Blocks()\X, n)
Next
If SpritePixelCollision(0, PlayerX, PlayerY, 1, Blocks()\X, Blocks()\Hoehe)
FG = 0
EndIf
Next
DisplayTransparentSprite(0, PlayerX, PlayerY)
TransparentSpriteColor(0,0)
EndProcedure
Repeat
ClearScreen(RGB(0,0,0))
ExamineKeyboard()
keys()
drawPlayer()
FlipBuffers()
Until quit = #True