Crazy PingPong - Ballbewegung

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Neoxit

Betreff: Crazy PingPong - Ballbewegung

BeitragSo, Nov 04, 2007 17:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja Hallo erstmal ich Programmier seit ein paar Tagen mit BlitzMax und
habe nun ein kleinen PingPong Klon programmiert (Genannt: Crazy PingPong)

Warum Crazy?
Naja der Ball pralt zwar korrekt von der Wand ab, allerdings dreht er die Richtung auch schnurstracks wieder um.

Ich zeig euch mal die derzeitige Ball "KI"

Code: [AUSKLAPPEN]


Function BallSystem()

   'Ballfunktion *kotz*
   ball_x = ball_x + ball_speed_x
   ball_y = ball_y + ball_speed_y

   If ImagesCollide(img_ball,ball_x,ball_y,0,img_wand,20,10,0) Then
      PlaySound sfx_ping
      ball_speed_x = Rand(-ball_maxspeed,ball_maxspeed)
      ball_speed_y = Rand(ball_minspeed,ball_maxspeed)
      If ball_y <= 30 Then ball_y = 32
   EndIf

   If ImagesCollide(img_ball,ball_x,ball_y,0,img_wand,20,580,0) Then
      PlaySound sfx_ping
      ball_speed_x = Rand(-ball_maxspeed,ball_maxspeed)
      ball_speed_y = Rand(-ball_maxspeed,-ball_minspeed)
      If ball_y >= 580 Then ball_y = 579
   EndIf

   If ImagesCollide(img_ball,ball_x,ball_y,0,img_player,player1_x,player1_y,0) Then
      PlaySound sfx_ping
      ball_speed_x = Rand(ball_minspeed,ball_maxspeed)
      ball_speed_y = Rand(-ball_maxspeed,ball_maxspeed)
      If ball_x <= 20 Then ball_x = 21
   EndIf

   If ImagesCollide(img_ball,ball_x,ball_y,0,img_player,player2_x,player2_y,0) Then
      PlaySound sfx_ping
      ball_speed_x = Rand(-ball_maxspeed,-ball_minspeed)
      ball_speed_y = Rand(-ball_maxspeed,ball_maxspeed)
      If ball_x >= 775 Then ball_x = 774
   EndIf

EndFunction



Wie man sieht, bewegt er sich in alle Richtungen , egal, aus welcher richtung der Ball kam.

Wie könnte man nun eine Weitaus "Realistischere" darstellung dieser Ball KI machen?

Hier könnt ihr euch das Spiel saugen und ausprobieren:

http://www.n-light.de.tk - Dort geht ihr auf News und dann CrazyPingPong Wink

MfG

Euer Neoxit Razz

Markus2

BeitragMo, Nov 05, 2007 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Für horizontale/vertikale Wände
brauchste nur x oder y spiegeln .

if x<0 then x=0 : speed_x = -speed_x
if x>640-1 then x=640-1 : speed_x = -speed_x

für Y das gleiche .

Sonnst die Regel einfallswinkel = ausfallswikel und mit Sin/Cos arbeiten
und dann kannste den Winkel manipulieren wenn der Schläger sich bewegt
beim Aufprall .
 

Dreamora

BeitragMo, Nov 05, 2007 14:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Statt mit Sinus - Kosinus kann man alternativ auch mit Vektoren arbeiten, dort ist das gesetz: Einfallswinkel zur Normale der Oberfläche = Ausfallswinkel zur Normale der Oberfläche (das zu berechnen ist eine simple subtraktion des vektors und der projektion des vektors auf die normale)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neoxit

BeitragMo, Nov 05, 2007 19:39
Antworten mit Zitat
Benutzer-Profile anzeigen
LoL so einfach war das xD Das nächste mal sollte ich wohl etwas mehr an die Physikalischen gesetze denken xD

(Das entfällt mir des öfteren)

Also funktioniert soweit super xD
Mit vektoren hab ich mich noch nicht beschäftigt ich weiß also nich so ganz wie des funzt und das mit Cos und Sin werd ich mir mal anschauen wie ich des machn muss. Wink

Thx soweit Razz

MfG
Neo

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group