Fragen zu SpriteCollision()
Verfasst: 26.10.2008 14:33
Hallo
Ich bin heut dabei mein erstes Spiel in PB zu programmieren - nur so zur Uebung... Das Spiel wird eine SpringBall-Variante ... ich denke es sollte jeder wissen, was damit gemeint ist
Jedenfalls hab ich da ein Problem ... Wenn der Ball runterfaellt will ich mit SpriteCollision() ueberpruefen, ob der Ball nun auf der linken seite des Ballfaengers ist, auf der rechten Seite oder genau in der Mitte. Das muss ich wissen um die Richtung das Balles bestimmen zu koennen ... ich hoffe euch ist klar wie ich das meine....
Hier die Main-Loop plus Deklarationen (bisher habe ich die X-Richtung das Balles per Zufall bestimmt, als der Ball und die Box sich beruehrten, ist aber keine Loesung):
Ich bin heut dabei mein erstes Spiel in PB zu programmieren - nur so zur Uebung... Das Spiel wird eine SpringBall-Variante ... ich denke es sollte jeder wissen, was damit gemeint ist

Jedenfalls hab ich da ein Problem ... Wenn der Ball runterfaellt will ich mit SpriteCollision() ueberpruefen, ob der Ball nun auf der linken seite des Ballfaengers ist, auf der rechten Seite oder genau in der Mitte. Das muss ich wissen um die Richtung das Balles bestimmen zu koennen ... ich hoffe euch ist klar wie ich das meine....
Hier die Main-Loop plus Deklarationen (bisher habe ich die X-Richtung das Balles per Zufall bestimmt, als der Ball und die Box sich beruehrten, ist aber keine Loesung):
Code: Alles auswählen
wandx.l = 100
wandy.l = 280
wandwidth.l = 50
wandheight.l = 10
ballx.l = 100
bally.l = 10
ballg.l = 1
ballgx.l = 0
zufall.l = Random(2)
CreateSprite(1, 5, 5)
CreateSprite(2, wandwidth, wandheight)
Repeat
ExamineKeyboard()
ClearScreen(0)
If StartDrawing(ScreenOutput()) = 0
MessageRequester("Laufzeit - Fehler", "Konnte Spiel nicht starten. Programm wird beendet.")
End
EndIf
Box(wandx, wandy, wandwidth, wandheight, RGB(0, 0, 255))
Circle(ballx, bally, 5, RGB(255, 0, 0))
StopDrawing()
FlipBuffers()
If KeyboardPushed(#PB_Key_Left) And wandx > 0
wandx - 5
ElseIf KeyboardPushed(#PB_Key_Right) And wandx < 250
wandx + 5
EndIf
If ballg = 1
bally + 1
ElseIf ballg = 0
bally - 1
EndIf
If SpriteCollision(1, ballx, bally, 2, wandx, wandy)
ballg = 0
ballgx = Random(2)
ElseIf bally <= 0
ballg = 1
EndIf
If ballgx = 1
ballx + 1
ElseIf ballgx = 2
ballx - 1
EndIf
If ballx >= 300
ballgx = 2
ElseIf ballx <= 0
ballgx = 1
EndIf
If WindowEvent() = #PB_Event_CloseWindow
Break
EndIf
Until KeyboardPushed(#PB_Key_Escape)