SpritePixelCollision?
Verfasst: 21.12.2012 18:05
Hallo,
ich bin gerade dabei ein kleines Spiel zu programmieren, und bin auf folgendes Problem gestoßen:
Ich möchte dass der Spieler sich nicht durch die grünen Sprites durchbewegen kann, weis aber nicht wie ich das umsetzen soll.
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