Kollision bei Pinball !!!!!!!!!!???????

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Jazoo

Betreff: Kollision bei Pinball !!!!!!!!!!???????

BeitragDi, Feb 08, 2005 14:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab aml ein Pinball Clon Programmiert doch ich bekomme keine
Kollision mit den Pinball Schlägern hin !!!!
Was muss ich machen damit das Funktioniert ?

MfG
Jazoo





Code: [AUSKLAPPEN]
Graphics 800,600,16,2
.NeuesSpiel
Cls


xyrect1 = x
xyrect2 = y
xball = 400
yball = 300


richtungx = Rnd(-4,4)
richtungy = Rnd(-4,4)
;____________________________
;___________________________|
;___________________________|
; Hauptschleife
Repeat

SetBuffer BackBuffer()
Cls
ClsColor 0,0,255


;--------------------------
Rect 100,xyrect1,10,30
Rect 700,xyrect2,10,30
Oval xball,yball,5,5,1

xball = xball + richtungx
yball = yball + richtungy
;---------------------------
; Ballberechnung ( Teil 1)
If xball = xyrect1 Then
richtungx = Abs (richtungx)
richtungy = Abs (richtungy)
Endif

;----------------------------
; Ballberechnung ( Teil 2)
If yball > 600 Then
richtungy  = richtung - 2
EndIf

If yball < 0 Then
richtungy =  reichtungy + 2
EndIf

If xball > 800 Then
Text 300,300," Spieler 2 hat verloren !!!! "
Text 10,10,"Drücken sie eingabe für ein neues Spiel oder ESC um das Spiel zu verlassen !"
If KeyDown (28) Then
Goto NeuesSpiel
EndIf
EndIf

If xball < 0 Then
Text 300,300, " Spieler 1 hat verloren !!!"
Text 10,10,"Drücken sie eingabe für ein neues Spiel oder ESC um das Spiel zu verlassen!"
If KeyDown (28) Then
Goto NeuesSpiel
EndIf
EndIf
;-------------------------------
; Spieler 1 ( Befehle )
If KeyDown ( 208 ) Then
xyrect1 = xyrect1 + 10
EndIf

If KeyDown (200) Then
xyrect1 = xyrect1 - 10
EndIf

If xyrect1 = 580 Then
xyrect1 = xyrect1 - 10
EndIf

If xyrect1 = - 10  Then
xyrect1 = xyrect1 + 10
EndIf
If KeyDown(1) Then
End
EndIf
;----------------------------------

; Spieler 2 ( Befehle)
If KeyDown(72) Then
xyrect2 = xyrect2 - 10
EndIf

If KeyDown (80) Then
xyrect2 = xyrect2 + 10
EndIf

If xyrect2 = 580 Then
xyrect2 = xyrect2 - 10
EndIf

If xyrect2 = - 10  Then
xyrect2 = xyrect2 + 10
EndIf
;--------------------------------
Flip

Forever



SpionAtom

BeitragDi, Feb 08, 2005 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo.

Also erstens verstehe ich unter Pinball einen Flipper (dieses ist aber ein Ping-Pongspiel) und zweitens ich hab dein Programm mal getestet.

Du hast ja diese Variablen für Balken und Ball:
xyrect1 = x
xyrect2 = y
xball = 400
yball = 300
richtungx = Rnd(-4,4)
richtungy = Rnd(-4,4)

Wenn der Ball sich jetzt nach Links bewegt (also richtungx negativ ist), kann der Ball mit dem linken Balken kollidieren. Der Ball und der Balken kollideren, wenn Ball und Balken dieselbe x-Koordinte haben und der Ball größer ist, als die y-Koordinate des Balken und kleiner ist, als die y-Koordinate plus die Balkenhöhe (versteht das noch einer Shocked ).



Kollidiert der Ball mit einem Paddle (egal, ob links oder rechts) so ändert sich die horizontale Ballgeschwindigkeit(richtungx) in die entgegengesetzte Richtung(-richtungx)
Andersrum sieht es für die rechte Seite aus.

Außerdem verhält es sich so an der oberen und unteren Wand:
Wenn der Ball an die obere oder untere Wand stößt, ändert sich richtungy in -richtungy.

Ich will dir keinen Quellcode schreiben, da du das ja selbst lernen sollst (learning by doing 8) )
  • Zuletzt bearbeitet von SpionAtom am Di, Feb 08, 2005 16:01, insgesamt einmal bearbeitet

Xalon

BeitragDi, Feb 08, 2005 15:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm die x+y koardinaten und gleiche sie mit denen von den schlägern ab.
Oder lade die schläger+ball aus ner bitmap datei.

Xalon
>>Besucht doch mal meine Seite,mit NEUEN Tutorials<<
User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group