Zahlenratespiel
Wir wollen jetzt versuchen, ein Ratespiel zu programmieren.
Der Computer ermittelt (für den Spieler natürlich unsichtbar) eine Zufallszahl zwischen 0 und 1000.
Der Spieler muss nun versuchen, die richtige
Zahl mit möglichst wenig Versuchen zu erraten.
Nach jedem Versuch muss der
Computer dem Spieler mitteilen, ob die gesuchte Zahl kleiner oder grösser als
der eingegebene Versuch ist.
Am Ende des Spiels soll der Computer die benötigte Anzahl Versuche auf dem Bildschirm ausgeben.
Tip:
Zur Bestimmung einer Zufallszahl gibt es in der C-Standardbibliothek zwei wichtige Funktionen:
int rand (void);
Liefert eine ganzzahlige Zufallszahl zwischen 0 und dem Wert RAND_MAX, welcher mindestens 32767 beträgt. Diese Zahl muss jetzt lediglich noch in unseren benötigten Bereich von 0 bis 1000 transformiert werden. Wenn n die gesuchte Zahl ist und z die vom rand() erhaltene Zufallszahl, dann können wir dazu folgende Formel verwenden:
n = z * 1000 / RAND_MAX
Damit wir hier keinen Integerüberlauf erhalten müssen wir jedoch die Berechnung im long-Format vornehmen und das Resultat dann wieder zurückverwandeln.
n = (int) ((long) z * 1000L / (long) RAND_MAX)
void srand (unsigned seed);
Diese Funktion initialisiert den
Zufallszahlengenerator neu.
Vor der ersten Anwendung von rand() sollte diese
Funktion aufgerufen werden, damit nicht bei jedem Programmlauf die gleichen
Zufallszahlen erzeugt werden.
Als Ausgangswert seed kann hier zum Beispiel der Ergebniswert der Funktion time() verwendet werden (time.h includen nicht vergessen).
srand ((unsigned) time (NULL));
Damit die Funktionen rand und srand verwendet werden können muss vorher im Programm die Headerdatei stdlib.h eingebunden werden mit folgendem Befehl:
#include <stdlib.h>
Um auch die Funktion time verwenden zu können muss zusätzlich noch die Headerdatei time.h mit eingebunden werden.
#include <time.h>
|