Multiplayer-Modus

Im letzten Abschnitt erweitern wir das Spiel für einen zweiten Mitspieler.
Dazu müssen wir ein zweites Objekt der Klasse Raumschiff mit einer y-Position der unteren Bildschirmhälfte erzeugen und einer zweiten Variablen zuweisen.
Raumschiff raumschiff2= new Raumschiff(100, 350, "Spieler 2");

Die Klasse Raumschiff verwendet in der act()-Methode die vier Pfeiltasten. Das bedeutet, dass alle Objekte dieser Klasse auf die gleichen Tasten reagieren. Für das zweite Raumschiff sollen aber andere Tasten, z. B. W-A-S-D verwendet werden. Wir benötigen eine Möglichkeit, die Tasten für die vier Richtungen nachträglich zu setzen. Dazu muss die Klasse Raumschiff Attribute vom Datentyp String für diese vier Tasten besitzen.

Die folgende Klassenkarte zeigt die notwendigen Attribute und Methoden:

In der Methode act() müssen statt der konstanten Werte für die Pfeiltasten die Attribute der Klasse eingesetzt werden.

Überarbeite mit Hilfe der Klassenkarte zunächst die Datei Raumschiff.
Erzeuge in der Datei Spiel ein zweites Raumschiff wie oben beschrieben und weise den beiden Raumschiffen mit der Methode setzeTasten() getrennte Steuerungstasten zu.

Zum Beispiel
für Raumschiff 1: Key.ArrowLeft, Key.ArrowLeft, Key.ArrowLeft, Key.ArrowLeft
für Raumschiff 2: "a", "d", "w", "s"

Nun lassen sich beide Raumschiffe getrennt steuern. Es fehlt aber noch der Weltraumschrott für das zweite Raumschiff. Damit beide Spieler die gleichen Chancen haben, erzeugen wir für das zweite Raumschiff die gleichen Weltraumschrott-Objekte, nur 300 Pixel weiter unten.

Ergänze den Programmcode in der Datei Spiel, so dass auch direkt nach dem Erzeugen eines Weltraumscrott-Objekts für die obere Fensterhälfte ein zweites Objekt, das sich in seinen Attributwerten nur von der y-Koordinate nterscheidet und so in der unteren Fensterhälft erscheint.

   // neuen Weltraumschrott in der oberen Fensterhälfte
   new Weltraumschrott(x, y, 10, farbe);
   // neuen Weltraumschrott in der oberen Fensterhälfte 300 Pixel weiter unten
   new Weltraumschrott(x, y+300, 10, farbe);

Spielmodi-Wahl

Zum Abschluss des Projekts schaffen wir noch eine Möglichkeit, beim Starten des Programms zu entscheiden, ob man alleine oder zu zweit spielen möchte. Dazu soll nach einer Frage die Zahl 1 oder 2 über die Konsole eingegeben werden. Je nach Antwort wird ein zweites Raumschiff-Objekt erzeugt oder nicht.
Eine Eingabe von Werten über die Konsole ist mit der Methode Input.readInt("Fragetext", 1) möglich. Der zweite Parameter, der hier als 1 gewählt wurde, ist der vorgebenen Standardwert für die Antwort.

Das folgende Programmierfenster enthält alle bisherigen Implementierungen.

Überarbeite das Programm in der Datei Spiel, so dass zu Beginn nach der Anzahl der Spieler gefragt wird und dementsprechend ein oder zwei Raumschiffe erzeugt werden.

// Programm zur Erzeugung der notwendigen Objekte und zur Spielsteuerung
// Abfrage zur Anzahl der Spieler
int anzahlspieler = Input.readInt("1 oder 2 Spieler?", 1);
// Erzeugen des ersten Raumschiffs und Festlegen der Tasten
Raumschiff raumschiff1 = new Raumschiff("Spieler 1", 100, 50);
raumschiff1.setzeTasten(Key.ArrowLeft, Key.ArrowRight, Key.ArrowUp, Key.ArrowDown);
// ggf. Erzeugen des zweiten Raumschiffs und Festlegen der Tasten
if(anzahlspieler == 2) {
   Raumschiff raumschiff2 = new Raumschiff("Spieler 2", 100, 350);
   raumschiff2.setzeTasten("a", "d", "w", "s");
}

Damit ist das Multiplayer-Spiel abgeschlossen.

Das folgende Programmfenster zeigt noch einmal die vollständige Implementierung ohne ausführliche Kommentare in 99 Codezeilen.