ZULETZT ANGESEHEN
Die Aufgabe der heutigen Stunde ist das Ratespiel! Es handelt sich um eine einfache Konsolenanwendung, die eine Zufallszahl generiert und den Nutzer auffordert, diese zu erraten. Das Programm folgt dem EVA-Prinzip (Eingabe, Verarbeitung, Ausgabe) und zählt die Versuche des Nutzers. Die Aufgabenstellung lautet:
In dieser Form ist das Ratespiel etwas langweilig. Besser wird es, wenn man in der Schleife ausgibt, ob die geratene Zahl kleiner oder größer als die gesuchte Zahl ist. Ergänze eine entsprechende Fallunterscheidung. Durch intelligentes Fragen kann man jetzt viel schneller die Zahl erraten, auch wenn du den Zahlbereich von 10 auf 100 vergrößerst.
Lösungsprozess der Aufgabe:
/**
*
* Das fertige Ratespiel Programm
*
* @version 1.0 vom 04.06.2025
* @MeinInfoKurs.github.io
*/
public class RateSpiel {
public static void main(String[] args) {
int GesuchteZahl = (int) (Math.random() * 10); // Zufallszahl zwischen 0 und 9
int GerateneZahl = -1; // Initialwert, um Schleife zu starten
int Rateversuche = 0; // Zähler für Versuche
while (GerateneZahl != GesuchteZahl) {
System.out.println("");
GerateneZahl = InOut.readInt("Gib eine Zahl ein: ");
Rateversuche++; // Zählt die Versuche hoch
}
System.out.println("Du hast die gesuchte Zahl " + GesuchteZahl + " nach " + Rateversuche + " Versuchen gefunden.");
} // end of main
} // end of class RateSpiel
In der Aufgabenstellung wird gefordert, dass wir folgende Funktionen in unseren Code implementieren:
- Generierung einer Zufallszahl
- Nutzereingabe einer Zahl für jeden Rateversuch
- Zählung der Versuche, bis die gesuchte Zahl gefunden wird
- Ausgabe der gesuchten Zahl und die Anzahl der Versuche
Nutzereingabe und Zufallszahl
Das Programm generiert eine Zufallszahl zwischen 0 und 9 mit Math.random() * 10, die in der INT Variable GesuchteZahl gespeichert wird. Die Variable GerateneZahl wird auf -1 initialisiert, um sicherzustellen, dass die Schleife startet, da -1 nicht im Bereich der Zufallszahl liegt. Das heißt egal welche (positive) Zahl generiert wird, dass Programm wird weiterhin funktionieren, da die -1 != (Ungleich) der generierten positiven Zahl ist. Die Eingaben erfolgen über die Methode InOut.readInt, die den Nutzer in der Konsole nach einer Zahl fragt. Der Code dafür sieht so aus:
int GesuchteZahl = (int) (Math.random() * 10); // Zufallszahl zwischen 0 und 9
int GerateneZahl = -1; // -1 Damit die initialisierung der Variable das Spiel nicht versehentlich beendet
int Rateversuche = 0; // Zähler für Versuche
System.out.println("");
GerateneZahl = InOut.readInt("Gib eine Zahl ein: "); // Die Eingabe des Nutzers wird unter der Variable "GerateneZahl" gespeichert
Verarbeitung und Zählung der Versuche
Eine While-Schleife vergleicht die geratene Zahl mit der gesuchten Zahl. Solange sie nicht übereinstimmen, wird der Nutzer aufgefordert eine neue Zahl einzugeben und die Variable "Rateversuche" wird inkrementiert. Sobald die richtige Zahl geraten wird, endet die Schleife, und die Ergebnisse werden ausgegeben. Hier ist ein Beispiel, wie die Verarbeitung funktioniert:
/* Beispiel: GesuchteZahl = 7 */
int GesuchteZahl = 7;
int GerateneZahl = -1;
int Rateversuche = 0;
while (GerateneZahl != GesuchteZahl) {
System.out.println("");
GerateneZahl = InOut.readInt("Gib eine Zahl ein: "); /* Nutzereingaben: 3, 8, 7 */
Rateversuche++; /* Rateversuche: 1, 2, 3 */
}
System.out.println("Du hast die gesuchte Zahl 7 nach 3 Versuchen gefunden.");