zurück weiter

C++

G.Eichelsdörfer - Staatliche Technikerschule Weilburg

Kleines Projekt 1: Zahlenratespiel (3)

Was haben wir bisher?

srand(time(NULL)); // Anfangsbitmuster zeitabhängig setzen
rand() % 1000 + 1; // Zufallszahl zwischen 1 und 1000 holen

Erstellen des Zahlenratespiels

Nun sollten Ihnen genügend Informationen vorliegen, um das Spiel erstellen zu können. Um loslegen zu können, fehlen noch die genauen Festlegungen, was das Produkt können und wie es sich verhalten soll - die Projektdefinition.

Projektdefinition

Name des Projektes: Zahlenratespiel

Verhalten des fertigen Produktes

Der Computer zieht eine natürliche Zufallszahl, die innerhalb eines festgelegten Bereichs liegt. Dieser Bereich reicht im Standardefall von 1 bis 100.

Ein Anwender, im folgenden Spieler genannt, soll die vom Computer gezogene Zahl finden. Zu diesem Zweck kann er wiederholt Tipps eingeben, welche der Computer überprüft. Das Spiel wird beendet, wenn der Spieler die Zahl gefunden oder als Tipp eine 0 eingegeben hat.

Das Programm stellt sich zunächst kurz vor (Zahlenratespiel) und erläutert die Regeln. Dann wird der Spieler aufgefordert, einen Tipp zum Finden der gezogenen Zufallszahl einzugeben. Er wird darauf hingewiesen, dass er durch die Eingabe einer 0 das Programm beenden kann. Der Spieler tätigt seine Eingabe, welche der Computer auf Eignung überprüft. Eine Eingabe ist dann geeignet, wenn sie 0 ist oder im festgelegten Zahlenbereich (s.o.) liegt.

Auf Grund des vom Spieler eingegebenen Tipps gibt der Computer eine von drei möglichen Antworten aus:
"Ihr Tipp ist kleiner als meine Zahl.",
"Ihr Tipp ist groesser als meine Zahl." oder
"Sie haben meine Zahl gefunden."
Der Zweck und Inhalt ist diesen möglichen Textausgaben zu entnehmen.

Hat der Spieler die Zahl nicht gefunden, wird er vom Computer aufgefordert einen weiteren Tipp einzugeben.

Der Computer zählt die Anzahl an Tippeingaben ohne die ggf. zum Beenden eingegebene 0 und gibt diese Anzahl zum Schluss aus.

Optionen

  1. Der Spieler darf zu Beginn des Spiels die größtmögliche Zahl (Maximum) per Eingabe festlegen. So ergibt sich ein Bereich von 1 bis zu diesem Maximum.

  2. Nach dem Ende eines Spiels wird dem Spieler die Möglichkeit eröffnet, ein weiteres Spiel zu bestreiten.

  3. Der "Zahlenbereich" kann fast beliebig ausgedehnt werden, indem statt ganzer Zahlen ein std::string verwendet wird, welcher ausschließlich mit Ziffern gefüllt wird. Die Eingabe muss entsprechend in eine std::string-Variable fließen.

    Der Vergleich beider Strings wird lexikografisch durchgeführt. Dabei werden zuerst die beiden ersten Zeichen verglichen. Sind diese verschieden, liegt bereits fest, welcher String der kleinere ist, also in einem Lexikon vor dem anderen stände. Sind beide Zeichen gleich, werden die nächsten beiden Zeichen verglichen ....
    Stimmen auch die beiden letzten Zeichen überein, sind die beiden Strings identisch.

    Hier soll der Spieler vor dem Spiel die Anzahl an Ziffern vorgeben können.

    Hinweis:
    Der Vergleich der "Zahlenwerte" gelingt nur dann, wenn beide Strings gleich lang sind. Eine kürzere Eingabe sollte also mit Nullen aufgefüllt, eine zu lange Eingabe hingegen abgewiesen werden.