Reaktion des Raumschiffs bei einer Kollision mit Weltraummüll

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);
      }