Erweiterungen

Für das Spiel sind eine Reihe von Erweiterungen und Veränderungen denkbar, die z. B. die Optik verbessern oder das Spiel abwechslungsreicher und interessanter machen. Einige Ideen werden hier vorgestellt.

Größenvariation der Hindernisse

Mit nur einer Zeile weiteren Code lässt sich die Größe der Weltraumschrott-Objekt variieren. Dazu deklariert man in der Endlosschleife des Spiels vor dem Erzeugen der Hindernisse eine Variable für den Radius, dem man eine zufällige Zahl zuweist.

Verändere den Code für die Spielsteuerung in der Datei Spiel, so dass die kreisförmigen Hindernisse mit einem zufälligem Wert für den Radius erzeugt werden.

Rotierende und pulsierende Hindernisse

Statt Kreise als Hindernisse kann man auch Vierecke verwenden und diese mit Hilfe der rotate()-Methode während des Fluges rotieren lassen.

Lasse die Klasse Weltraumschrott von der Klasse Rectangle erben. Überarbeite die Attribute und den Konstruktor der Klasse und ergänze die act()-Methode, so dass sich die Hindernisse drehen.

Kreisförmige Hindernisse könnten auch periodisch anwachsen und wieder schrumpfen:

Das Spiel wird auch optisch ansprechender, wenn man statt der Kreise Sprites als Hindernisse wählt. Die Klasse Weltraumschrott müsste dann die Klasse Sprite erweitern.

Weitere Spielmodi

Denkbar wäre auch ein kooperativer Spielmodus mit zwei Spielern, bei dem die befreundeten Raumschiffe sich in einer Bildschirmhälfte bewegen. Aufgrund der Implementierung (eine Berührung mit irgendeinem grafischen Objekt führt zum Schaden) dürfen diese sich nicht gegenseitig berühren.

Anzeige des Spielfortschritts und der Schadenpunkte

Die deklarierte Variable systemgeschwindigkeit ist ein Maß für die bisher erreichte Flugdauer bzw. die erreichten Spielpunkte. Diese könnten unter dem zweiten Spielbereich mit Hilfe der Klasse Text dargestellt werden.

Ein größeres Zeichenfenster erhält man durch Erzeugen einer neuen Welt zu Beginn des Spiels z. B. mit new World(800, 700);. Die beiden Parameter definieren die Breite und Höhe der Welt.

Ebenfalls mit Text-Objekten könnte die Größe des Schadens der beiden Raumschiffe im Zeichenfenster angezeigt werden. Beim Erreichen der maximalen Schadenspunkte könnte ein entsprechender Hinweis in der zugehörigen Spielfeldhälfte erscheinen.

Nutze Objekte der Klasse Text, um Informationen zum Spiel auf dem Zeichenfenster darzustellen. Greife dazu gegebenenfalls auf Attribute der Klassen Raumschiff zu.

Treibstoff mit Tankanzeige

Um die Spieler zu möglichst wenig Steuerungsaktionen zu bewegen, könnte eine Menge an möglichem Treibstoff vorgegeben werden. Bei jedem Tastendruck wird dieser verkleinert. Bei leerem Tank ist das Raumschiff schließlich nicht mehr manövrierfähig.

Die Treibstoffanzeige könnte optisch durch einen kleiner werdenden Balken dargestellt werden.

Ergänze die Klasse Raumschiff um ein Attriut treibstoff. Sorge dafür, dass der Treibstoff bei einer Beschleunigung verringert wird und das Raumschiff ohne Treibstoff nicht mehr beschleunigt werden kann.
Visualisiere den Tankinhalt der Raumschiffe durch Rechtecke am unteren Bildschirmrand.

Mehr Spieler

Schließlich könnten auch mehr als zwei Spieler gleichzeitig verschiedenen Raumschiffe steuern, entweder untereinander oder z. B. auch gemeinsam in einem Spielbereich.

Überlege dir im Team eine Erweiterung des Spiels für drei oder vier Spieler aus und implementiert sie gemeinsam.

Grenzen der Erweiterungen

Bei den vorgeschlagenen Implementierung wurde bewusst auf die Referenz von Objekten auf andere Objekte verzichtet, weil dies den bayerischen Lehrplan der 9. Jahrgangsstufe des Gymnasiums übersteigt. Die in diesem Spiel vorkommenden Objekte können also nicht miteinander kommunizieren.
Die verwendete Methode collidesWithAnyShape(), die für die Spiellogik zentral ist, ermöglicht den beteiligten Objekten nicht, den Kollisionspartner zu ermitteln und unterschiedlich darauf zu reagieren.
Der Lehrplan der 10. Jahrgangsstufe bietet mit den Referenzattributen von Klassen und den einfach indizierten Datenstrukturen wie Feldern oder Listen später viele weitere Möglichkeiten.