Schreiben Sie ein Programm, um das Spiel zu spielen.
Willkommen zum Münzenspiel Es sind noch 11 Münzen auf dem Stapel Spieler 1 nimm 1-3 Münzen > 3 Es sind noch 8 Münzen auf dem Stapel Spieler 2 nimm 1-3 Münzen > 7 Du darst höchstens 3 Münzen nehmen Es sind noch 8 Münzen auf dem Stapel Spieler 2 nimm 1-3 Münzen > 2 Es sind noch 6 Münzen auf dem Stapel Spieler 1 nimm 1-3 Münzen > 0 Du musst mindestens 1 Münze nehmen Es sind noch 6 Münzen auf dem Stapel Spieler 1 nimm 1-3 Münzen > 3 Es sind noch 3 Münzen auf dem Stapel Spieler 2 nimm 1-3 Münzen > 3 Spieler 1 hat verloren Bis bald
Als Vorbereitung haben Sie im Programmgerüst die Programmlogik als Kommentare umgesetzt.
import java.util.Scanner; /** * play a game with coins * * @author Marcel Suter * @since 2018-09-28 * @version 1.0 */ public class CoinGame{ static Scanner scanner; /** * constructor */ public CoinGame() { scanner = new Scanner(System.in); } /** * starts the execution * * @param args * command line arguments */ public static void main(String[] args) { CoinGame program = new CoinGame(); System.out.println("Willkommen zum Münzenspiel"); program.play(); System.out.println("Bis bald"); scanner.close(); } /** * play the coin game */ private void play() { // TODO Variablen deklarieren // TODO aktueller Spieler gleich 1 /* generate random number of coins between 10 and 30 */ TODO = (int)(Math.random() * 20 + 10); // TODO Solange Restliche Münzen grösser Null // TODO Ausgabe: Restliche Münzen // TODO Ausgabe: aktueller Spieler nimm 1-3 Münzen // TODO Eingabe: Anzahl Münzen // TODO Falls Anzahl Münzen kleiner 1 System.out.println("Du musst mindestens 1 Münze nehmen"); // TODO Sonst // TODO Falls Anzahl Münzen grösser 3 // TODO Ausgabe: Du kannst höchstens 3 Münzen nehme // TODO Sonst // TODO Reduziere Restliche Münzen um Anzahl // TODO Aktueller Spieler = 3 - Aktueller Spieler // Ende der inneren Selektion // Ende der äusseren Selektion // Ende der Iteration // TODO Ausgabe: aktueller Spieler hat verloren } }
Zu Beginn des Programms wird eine zufällige Anzahl Münzen generiert.
Dies geschieht mit dem Befehl … (int)(Math.random() * 20 + 10);
Math.random()
erzeugt eine Zufallszahl zwischen 0 und 1.Sie brauchen das Ergebnis dieses Befehls nur in einer Variable zu speichern.
Die Spieler 1 und 2 ziehen abwechslungsweise.
Für die Anzeige des jeweils aktuellen Spielers, benötigen wir eine Variable.
Diese Variable erhält am Anfang den Wert 1
, also ist Spieler 1 am Zug.
Hat der Spieler eine gültige Anzahl eingegeben, so wechselt der Spieler.
Dazu rechnen wir Aktueller Spieler = 3 - Aktueller Spieler
.
1
, so ist das Resultat der Rechnung 2
.2
, so ist das Resultat der Rechnung 1
.Das Resultat wird in der Variable für den aktuellen Spieler gespeichert.
Stellen Sie nach jedem Schritt sicher, dass das Programm korrekt kompiliert wird. Fahren Sie erst fort, nachdem alle Fehler korrigiert sind.
play()
.Realisieren Sie alle Ein- und Ausgaben
Realisieren Sie schrittweise die Selektionen und Iterationen.
Spielen Sie das Spiel gegen sich selber oder einen Kollegen. Prüfen Sie auch, wie das Programm auf ungültige Züge (z.B. 0 Münzen, 5 Münzen) reagiert.
Zeigt das Programm den Sieger korrekt an?
Erstellen Sie ein neues Programm (CoinsSolo), bei dem ein Spieler gegen den Computer spielen kann. Für den Zug des Computers können Sie verschiedene Varianten programmieren:
coinTake = (int)(Math.random() * 3 + 1);