Logik eines Würfelspiels: Gewinn- und Spielsimulation
Eingeordnet in Englisch
Geschrieben am in 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
7
oder11
ist, gewinnt der Spieler. - Sofortiger Verlust: Wenn die Summe
2
,3
oder12
ist, 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 (
a
undb
) 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 eine7
fällt.
Ergebnis der Point-Phase
- Gewinn: Wenn
val2
gleich dem ursprünglichen Punkt (val
) ist, gewinnt der Spieler. - Verlust: Wenn
val2
gleich7
ist, 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 (
number
undzahl2
) werden generiert. - Die Funktion
gano_la_apuesta
wird 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
anzahlSpiele
gespeichert. - Die Funktion
crear_juego
wird 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();
}