Der schiefe Wurf

Die physikalischen Grundlagen

Der schiefe Wurf setzt sich aus zwei Bewegungen zusammen: einer gleichförmigen Bewegung in horizontaler Richtung und einer beschleunigten Bewegung in vertikaler Richtung

Für die horizontale Bewegung gilt: X(t) = Vx.t , für die vertikale Bewegung gilt: Y(t) = Vy.t - g/2 . t^2
X,Y sind die karthesichen Koordinaten des Geschoßes zum Zeitpunkt t
Vx,Vy sind die Abschussgeschwindigkeiten in X- und in Y-Richtung.
g=9.81 m/s/s ist die Erdbeschleunigung. t ist die Zeit in Sekunden.

Die Geschwindigkeitskomponenten Vx und Vy werden aus der Abschussgeschwindigkeit V und dem Abschusswinkel W berechnet:
Vx=V.cos(W) , Vy=V.sin(W)

Mit Hilfe des Zufallsgenerators werden die Start- und Zielkoordinaten ermittelt:

   startX=(int) (100*Math.random());
   startY=(int) (100*Math.random());
   zielX= (int) (breit-100*Math.random());
   zielY= (int) (100*Math.random());
Ziel des Spiels ist es, mit möglichst wenig Versuchen das Ziel zu treffen.

Der Bewegungsablauf wird dabei in ganz kleine Zeitintervalle dt (dt=0.001s) zerlegt. Nach jedem dieser Zeitintervalle wird die Position des Geschoßes nach obiger Formel berechnet und ein kleiner Kreis gezeichnet.

   x=startX+vx*t;
   y=startY+vy*t-g0/2*t*t;
   g.drawOval((int)(x-radius/2),boden-(int)(y-radius/2),radius,radius);
Eine Wurfspiel hat dann etwa zu folgendem Ergebnis führen:

In Abhängigkeit von Anfangsgeschwindigkeit und Abschusswinkel erhält man verschiedene Geschoßbahnen:
Je größer die Anfangsgeschwindigkeit, desto weiter fliegt das Geschoß.
Die Wurfweite kann jedoch bei gleicher Abschussgeschwindigkeit mit zwei verschiedenen Winkeln erreicht werden. Falls Start und Ziel auf gleicher Höhe liegen, so sind diese beiden Winkel symmetrisch zur Mediane(45°); d.h. die Winkel 60°=45°+15° und 30°=45°-15° führen zur selben Wurfweite.
Der Bewegungsablauf wird abgebrochen, wenn das Geschoß den linken oder rechten Fensterrand erreicht oder zurück auf den Boden fällt oder das Ziel getroffen hat.
Start und Ziel sind als kleine Kreise zu erkennen.
Das Geschoß hat dann das Ziel erreicht, wenn der Abstand von Geschoß und Ziel kleiner als der Radius des Geschoßes bzw. des Zieles ist.
Har man das Ziel getroffen, so wird die "Explosion" durch eine Folge von Kreisen dargestellt.
Für Mathematiker die Codierung in Java:

   getroffen=(Math.sqrt((x-zielX)*(x-zielX)+(y-zielY)*(y-zielY))<=radius);
   fertig=(x<0)||(y<0)||(x>breit)||(getroffen);

Das Java-Programm

Das Java-Applet implementiert die Interfaces ActionListener und Runnable und enthält im Wesentlichen folgende Elemente:

Die Bedienung des Spiels

Doch nun wagen Sie selbst ein Spiel!

Das komplette Programmlisting finden Sie hier als Textdatei.