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 oder 11 ist, gewinnt der Spieler.
  • Sofortiger Verlust: Wenn die Summe 2, 3 oder 12 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 und b) 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 eine 7 fällt.

Ergebnis der Point-Phase

  • Gewinn: Wenn val2 gleich dem ursprünglichen Punkt (val) ist, gewinnt der Spieler.
  • Verlust: Wenn val2 gleich 7 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:

  1. Zwei neue Würfelzahlen (number und zahl2) werden generiert.
  2. Die Funktion gano_la_apuesta wird mit diesen Zahlen aufgerufen, um das Ergebnis des Spiels zu ermitteln.
  3. 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

  1. Der Benutzer wird aufgefordert, die Anzahl der zu spielenden Partien einzugeben.
  2. Die Eingabe wird gelesen und in der Variable anzahlSpiele gespeichert.
  3. Die Funktion crear_juego wird mit der angegebenen Anzahl von Spielen aufgerufen.
  4. Das Ergebnis (Anzahl der gewonnenen Spiele) wird auf der Konsole ausgegeben.
  5. 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();

}

Verwandte Einträge: