Auch beim Raumschiff soll ein Kontakt mit einem Schrottteil nicht unberücksichtigt bleiben.
Wir gehen davon aus, dass ein Raumschiff nach der fünften Kollision nicht mehr einsatzfähig ist und
das Spiel für den Piloten damit endet. Das Raumschiff benötigt somit eine Variable, die die Anzahl
Kollisionen zählt, wir nennen sie schaden
.
Wie beim Weltraumschrott können wir mit Hilfe der Methode collidesWithAnyShape()
eine
Kollision feststellen. Dabei soll gegebenenfalls der Wert von schaden
um 1 erhöht werden
und die Geschwindigkeiten in beide Raumrichtungen vx
und vy
auf 0 gesetzt werden.
Eine Kollision führt also zum Stillstand des Raumschiffs.
Ergänze das Attribut schaden
und implementiere das beschriebene Verhalten in der Methode act()
der Klasse
Raumschiff
und teste dein Programm.
class Raumschiff extends Sprite { // bereits vorhandende Attribute // ... int schaden; // bereits implementierter Konstruktor // ... void act() { // bereits implementierter Code // .... if(collidesWithAnyShape()) { vx = 0; vy = 0; schaden = schaden + 1; println(name + " - Schaden: " + schaden); } } }
Zu guter Letzt müssen wir nur noch dafür sorgen, dass das Spiel bei fünf Schadenspunkten endet.
Ein Programmende erreicht man mit dem Befehl System.exit(0);
.
Am Ende der
act()
-Methode überprüfen wir die Anzahl der Schadenspunkte und beenden
gegebenenfalls das Programm.
Ergänze im letzten Programfenster die Methode act()
um die notwendigen Codezeilen
und teste dein Programm.
// bisheriger Code der Methode act() if(schaden == 5) { System.exit(0); }