Pong: Kollision des Balls mit einem Schläger

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Hagbard

Betreff: Pong: Kollision des Balls mit einem Schläger

BeitragDo, Jun 08, 2006 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
So, habe vor einiger Zeit mal Pong nachprogrammiert...
Mein Problem ist, dass die Kollisionen einfach nicht so wollen, wie ich...

So sieht mein Codeausschnitt aus, mit dem ich das probiert habe damals (und auch heute):

Code: [AUSKLAPPEN]

; Zeichnung Spieler

; Spieler 1
DrawImage player1, pl1_X, pl1_Y


; Spieler 2
DrawImage player2, pl2_X, pl2_Y



; Steuerung Spieler
If Not ende > 0 Then


; Spieler 1
If KeyDown(17) And pl1_Y > 21 Then pl1_Y = pl1_Y - 2 : pl1_Y1 = 2
If Not KeyDown(17) Then pl1_Y1 = 0

If KeyDown(31) And pl1_Y < 392 - balken_h Then pl1_Y = pl1_Y + 2 : pl1_Y2 = -2
If Not KeyDown(31) Then pl1_Y2 = 0



; Spieler 2
If game_type = 1
  If KeyDown(200) And pl2_Y > 21 Then pl2_Y = pl2_Y - 2 : pl2_Y1 = 2
  If Not KeyDown(200) Then pl2_Y1 = 0

  If KeyDown(208) And pl2_Y < 392 - balken_h Then pl2_Y = pl2_Y + 2 : pl2_Y2 = -2
  If Not KeyDown(208) Then pl2_Y2 = 0
EndIf


; KI


EndIf



; Kollision Spieler1 - Ball
If ImageRectCollide(ball, b_X, b_Y, 0, pl1_X + 8, pl1_Y + pl1_Y2, 1, balken_h) Then
  b_sX = b_sX * -1
  b_sY = b_sY *  1 
EndIf


If ImageRectCollide(ball, b_X, b_Y, 0, pl1_X, pl1_Y + pl1_Y2, 8, 1) Then
  b_sX = b_sX *  1
  b_sY = b_sY * -1 
EndIf


If ImageRectCollide(ball, b_X, b_Y, 0, pl1_X, pl1_Y + 28 + pl1_Y2, 8, 1) Then
  b_sX = b_sX *  1
  b_sY = b_sY * -1 
EndIf


Rect pl1_X, pl1_Y + pl1_Y1 + pl1_Y2, 8, 1            ; oben
Rect pl1_X + 8, pl1_Y + pl1_Y1 + pl1_Y2, 1, balken_h ; rechts
Rect pl1_X, pl1_Y + 28 + pl1_Y1 + pl1_Y2, 8, 1       ; unten



; Zeichnung Ball
DrawImage ball, b_X, b_Y

If game = 1 Then
  b_X = b_X + b_sX
  b_Y = b_Y + b_sY
EndIf


Wer sich das ganze mal angucken möchte, balken_h ist die vorher berechnete Höhe des Balkens.
"spieler1" ist ein Rechteck, "ball" ein Kreis.

Leider funktioniert die Kollision nicht richtig und ich bin mir nicht sicher, ob ich irgendwas vergessen habe oder falsch gemacht habe. Wer das nicht so erkennt, kann ja kurz Bescheid "schreiben", dann lad ich das mal hoch. Ist das vielleicht ein bekanntes Problem Habe es allerdings noch nie hier gesehen...?!

Danke

PS: Habs jetzt noch schnell hochgeladen...
https://www.blitzforum.de/upload/file.php?id=155

Die Computersteuerung ist noch in Arbeit und hier nicht enthalten.
Der linke Spieler wird mit w=oben, s=unten gesteuert, der rechte mit den Pfeiltasten oben und unten.
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 20:51, insgesamt 3-mal bearbeitet

Schranz0r

BeitragFr, Jun 09, 2006 11:42
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm der COMPUTER Spieler gewegt sich net?!?!?
der Ball ist mit der Maus verschiebbar ?!?!

also die Kollision funzt doch super, bei den was du hochgeladen hast Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group