Pong
Übersicht

alphaoneBetreff: Pong |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie wärs mit Double-Buffering??
Ok, du hast zwar Flip, aber leider kein SetBuffer BackBuffer() ![]() |
||
Webspaceanbieter?
Klick hier! Kultige Spieleschmiede? Klick hier! |
alphaone |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
herrlich ![]() ![]() vielen dank für die schnelle antwort! |
||
![]() |
Kryan |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja stimmt ein bisschen schon, aber wenn man nicht genau hinguckt fällt das doch kaum auf ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Forensuche verwenden!!
Ich habs schon mal gepostet gehabt ^^ https://www.blitzforum.de/foru...ht=#191277 |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group