Logik eines Würfelspiels: Gewinn- und Spielsimulation
Eingeordnet in Englisch
Geschrieben am  in  Deutsch mit einer Größe von 6,66 KB
Deutsch mit einer Größe von 6,66 KB
Klasse: Game
Diese Klasse implementiert die Logik für ein einfaches Würfelspiel.
Logik des Würfelspiels: Die Funktion "gano_la_apuesta"
Die Klasse Game enthält die Kernlogik für ein Würfelspiel.
Die Funktion gano_la_apuesta(int a, int b)
Diese Funktion überprüft, ob der Spieler basierend auf zwei Würfelwürfen (a und b) gewonnen oder verloren hat.
- Sie gibt 1(wahr) zurück, wenn der Spieler gewinnt.
- Sie gibt 0(falsch) zurück, wenn der Spieler verliert.
Initialer Wurf und sofortige Entscheidung
Zuerst wird die Summe der beiden Würfel (val = a + b) berechnet.
Es gibt zwei sofortige Entscheidungsszenarien:
- Sofortiger Gewinn: Wenn die Summe 7oder11ist, gewinnt der Spieler.
- Sofortiger Verlust: Wenn die Summe 2,3oder12ist, verliert der Spieler.
Fortsetzung des Spiels (Point-Phase)
Wenn keine der oben genannten Bedingungen zutrifft, wird das Spiel fortgesetzt. Der Spieler muss seinen Punkt (die ursprüngliche Summe val) wiederholen, bevor eine 7 gewürfelt wird.
Dies wird in einer Schleife durchgeführt:
- Es werden neue Würfelwürfe (aundb) generiert.
- Die neue Summe (val2 = a + b) wird berechnet.
- Die Schleife läuft, bis entweder der ursprüngliche Punkt (val) erneut gewürfelt wird oder eine7fällt.
Ergebnis der Point-Phase
- Gewinn: Wenn val2gleich dem ursprünglichen Punkt (val) ist, gewinnt der Spieler.
- Verlust: Wenn val2gleich7ist, verliert der Spieler.
Code-Auszug: gano_la_apuesta
public int gano_la_apuesta(int a, int b) {
    int val = 0, val2, gueltig = 0; // gueltig = 0 (false), 1 (true)
    val = a + b;
    if (val == 7 || val == 11 || val == 2 || val == 12 || val == 3) {
        if (val == 7 || val == 11) { // Sofortiger Gewinn
            return 1; // true
        } else if (val == 2 || val == 12 || val == 3) { // Sofortiger Verlust
            return 0; // false
        }
    } else { // Dritter Fall: Point-Phase
        do {
            a = new Random().nextInt(6) + 1; // Erzeuge neue Zufallszahl für Würfel 1
            b = new Random().nextInt(6) + 1; // Erzeuge neue Zufallszahl für Würfel 2
            val2 = a + b;
            if (val == val2 || val2 == 7) { // Prüfe auf Gewinn (Punkt wiederholt) oder Verlust (7 gewürfelt)
                gueltig = 1;
            }
        } while (gueltig == 0); // Schleife läuft, bis eine Entscheidung getroffen wurde
        if (val == val2) { // Gewinn: Punkt wurde wiederholt
            return 1; // true
        }
        if (val2 == 7) { // Verlust: 7 wurde gewürfelt
            return 0; // false
        }
    }
    return -1; // Fehlerfall, sollte nicht erreicht werden
}
Simulation mehrerer Spiele: Die Funktion "crear_juego"
Die Funktion crear_juego(int c)
Diese Funktion simuliert eine bestimmte Anzahl von Spielen (c) und zählt, wie oft der Spieler gewinnt.
Ablauf der Simulation
Eine Schleife wird c-mal durchlaufen, wobei in jeder Iteration ein neues Spiel simuliert wird:
- Zwei neue Würfelzahlen (numberundzahl2) werden generiert.
- Die Funktion gano_la_apuestawird mit diesen Zahlen aufgerufen, um das Ergebnis des Spiels zu ermitteln.
- Wenn das Spiel gewonnen wurde (Rückgabewert 1), wird ein Gewinnzähler (cont) erhöht.
Am Ende der Simulation gibt die Funktion die Gesamtzahl der gewonnenen Spiele zurück.
Code-Auszug: crear_juego
public int crear_juego(int c) {
    int number, zahl2, cont = 0;
    // Hinweis: Für bessere Zufälligkeit in realen Anwendungen sollte eine einzige Random-Instanz wiederverwendet werden.
    for (int i = 0; i < c; i++) { // Für die Anzahl der gewünschten Spiele
        number = new Random().nextInt(6) + 1; // Generiert die erste Würfelzahl
        zahl2 = new Random().nextInt(6) + 1; // Generiert die zweite Würfelzahl
        int win = gano_la_apuesta(number, zahl2); // Aufruf der Funktion zur Überprüfung des Spielergebnisses
        if (win == 1) { // Wenn der Spieler gewonnen hat
            cont++; // Erhöhe den Gewinnzähler
        }
    }
    return cont;
}
Programmstart: Die Hauptmethode
Die Methode main(String[] args)
Dies ist der Einstiegspunkt des Programms, der die Spielsimulation steuert.
Ablauf der Hauptmethode
- Der Benutzer wird aufgefordert, die Anzahl der zu spielenden Partien einzugeben.
- Die Eingabe wird gelesen und in der Variable anzahlSpielegespeichert.
- Die Funktion crear_juegowird mit der angegebenen Anzahl von Spielen aufgerufen.
- Das Ergebnis (Anzahl der gewonnenen Spiele) wird auf der Konsole ausgegeben.
- Das Programm wartet auf eine Benutzereingabe, bevor es beendet wird.
Code-Auszug: main
public static void main(String[] args) {
    int anzahlSpiele;
    StdOut.println("Geben Sie die Anzahl der zu spielenden Partien ein:");
    anzahlSpiele = StdIn.readInt();
    StdOut.println("Die Anzahl der gewonnenen Spiele ist: " + crear_juego(anzahlSpiele)); // Simuliert Spiele und gibt die Gewinne aus
    int key;
    StdOut.println("Drücken Sie eine beliebige Taste, um fortzufahren.");
    key = StdIn.readInt();
}
