Pong

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

alphaone

Betreff: Pong

BeitragMo, Mai 29, 2006 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab grad das Pong Tutorial angefangen, aber nen bisschen umprogrammiert und jetzt hab ich den salat.....
irgendwie verschwindet der ball immer wenn er an den oberen bildschirmrand kommt kurz und taucht dann wieder auf!??!?!?!?!
und irgendwie flackert das ganze auch komisch...
was läuft da schief?

Code: [AUSKLAPPEN]

Global pongx,pongy,ponglaenge=60,ponghoehe=10,pongspeed=10
Global ballx,bally,balllaenge=8,ballhoehe=8,ballmovex=5,ballmovey=5
Global screenwidth= 800, screenheight= 600

Const links=203, rechts=205

Graphics screenwidth,screenheight,32,1
ClsColor 0,0,0
frametimer = CreateTimer(60)

pongx = (screenwidth/2) - (ponglaenge/2)
pongy = screenheight/100*98-(ponghoehe*5)
ballx = screenwidth / 2
bally = screenheight / 2

; HAUPTSCHLEIFE
Repeat
Cls
WaitTimer frametimer

movePONG()
moveBALL()
collision()
drawscreen()

Flip
Until KeyHit(1)


; DEN BILDSCHIRM BEMALEN
Function drawscreen()
Rect pongx,pongy,ponglaenge, ponghoehe
Rect ballx,bally,balllaenge, ballhoehe
End Function

; DEN PONG BEWEGEN
Function movePONG()

If KeyDown(links)
pongx = pongx - pongspeed
End If
If KeyDown(rechts)
pongx = pongx + pongspeed
End If

If pongx <= 1 Then pongx = 1
If pongx => screenwidth - ponglaenge Then pongx = screenwidth - ponglaenge

End Function

; DEN BALL BEWEGEN
Function moveBALL()
ballx = ballx + ballmovex
bally = bally + ballmovey

If bally > screenheight-ballhoehe Then
ballmovey = 0 - ballmovey
EndIf
If bally < ballhoehe Then
ballmovey = -ballmovey
EndIf
If ballx > screenwidth-balllaenge Then
ballmovex = 0 - ballmovex
EndIf
If ballx < balllaenge Then
ballmovex = - ballmovex
End If
End Function

; COLLISION
Function collision()
If ballx > pongx And ballx < (pongx+ponglaenge) And bally >= pongy
ballmovey = - ballmovey
EndIf

End Function

Kryan

BeitragMo, Mai 29, 2006 19:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie wärs mit Double-Buffering??

Ok, du hast zwar Flip, aber leider kein SetBuffer BackBuffer() Wink
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

alphaone

BeitragMo, Mai 29, 2006 19:41
Antworten mit Zitat
Benutzer-Profile anzeigen
herrlich Wink so gefällt mir das gleich viel besser Cool

vielen dank für die schnelle antwort!

Kryan

BeitragMo, Mai 29, 2006 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
der Ball flackert aber trotzdem noch leicht...und abgesehen davon ist da ein kleiner Kollisionsfehler:

https://www.blitzforum.de/upload/file.php?id=137

Der Ball kommt von der Seite in den Schläger rein, und bewegt sich dann so komisch an der unteren Seite des Schlägers

Das kann man verhindern, in dem man, nach der Kollision, den Ball auch sofort schon bewegt (also in diesem Schleifendurchlauf 2*mal)
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!
 

alphaone

BeitragMo, Mai 29, 2006 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ja stimmt ein bisschen schon, aber wenn man nicht genau hinguckt fällt das doch kaum auf Wink

ja das mit der schleife ist ne gute idee, das werd ich nochmal ändern, ist mir auch schon aufgefallen, aber ich hatte bisher noch keine ahnung woran das liegt, ich dachte ich müsste die seitenteile des schlägers auch noch auf ne collision abfragen....

also vielen dank!
hast mir echt weiter geholfen!!!

Kryan

BeitragDi, Mai 30, 2006 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
für die Ballbewegung würde ich dir die Trigonometrie ans Herz legen:

ballx#=ballx#+Sin(ballwinkel)*ballspeed
bally#=bally#-Cos(ballwinkel)*ballspeed

So kannst du 1. einen genauen Winkel nehmen und 2. die Geschwindigkeit pixelgenau einstellen.

Ballx und Bally müssen als Float (#) deklariert werden

Der Abprall an einem Schläger/an der Wand erfolgt so:
ballwinkel=(540-ballwinkel) Mod 360
Webspaceanbieter?
Klick hier!
Kultige Spieleschmiede?
Klick hier!

Schranz0r

BeitragDi, Mai 30, 2006 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Forensuche verwenden!!

Ich habs schon mal gepostet gehabt ^^


https://www.blitzforum.de/foru...ht=#191277

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group