Brettspiel: die Jäger und der Hase

Transcrição

Brettspiel: die Jäger und der Hase
TECHNISCHE UNIVERSITÄT DRESDEN
@
@
@
@
@
@
Institut für Wissenschaftliches Rechnen
Antje Noack
@
@
@
@
@
@
Informatik für Lehramt – SoSe 2007
Projekt 4 — Bearbeitung: 04.06.-29.07.2007
Brettspiel: die Jäger und der Hase
Schreiben Sie ein Programm, das das Spiel ”Die Jäger und der Hase” (vier schwarze Figuren &
eine weiße Figur) auf einem virtuellen Schachbrett simuliert. Die Regeln sind die folgenden:
• Gespielt wird nur auf den schwarzen Feldern.
• Der Hase (weiße Figur) startet auf E1, die Jäger (schwarz) gegenüber auf B8, D8, F8, H8.
• Es wird abwechselnd gezogen. Der Hase springt in jedem Zug genau zu einem der benachbarten schwarzen Felder (vor, zurück oder diagonal). Die Jäger ziehen immer vorwärts. In
einem Zug der Jäger zieht genau eine Jägerfigur, die sich dann zu einem der zwei benachbarten schwarzen Felder in Vorwärtsrichtung bewegen muß.
• Der Hase hat gewonnen, wenn er die gegenüberliegende Seite erreicht. Die Jäger hingegen
haben gewonnen, falls sie den Hase so einkesseln, dass er nicht mehr davonspringen kann
(d.h. keinen Zug mehr machen kann).
Setzen Sie folgende Schritte in Ihrem Programm um:
a) Ihr C-Programm soll für zwei Spieler geschrieben werden, die die Rollen des Hasen bzw.
der Jäger übernehmen.
b) Speichern Sie die jeweils aktuelle Stellung der Figuren in einer 8 × 8 Matrix. Führen Sie
dazu einen neuen Datentyp matrix mittels des typedef-Befehls ein. Die Figuren können
z.B. mit Zahlen von 1 bis 5 benannt, die leeren Plätze mit Nullen belegt sein.
c) Schreiben Sie Funktionen, die folgende Aktionen auf der Matrix ausführen:
1. Ein Zug des Hasen und Prüfung, ob der Hase gewonnen hat. Dabei kann natürlich
nur auf leere Plätze, auf denen kein Jäger lauert, gesprungen werden. Ist ein Zug nicht
möglich, muß also die Eingabe wiederholt werden.
2. Ein Zug eines der Jäger (mit wiederholter Eingabe, bei Fehleingabe wie in 1.) und
Prüfung, ob die Jäger gewonnen haben (das ist der Fall, wenn der Hase nicht mehr
springen kann).
3. Abspeichern der aktuellen Stellung in einer Textdatei, deren Namen von den Spielern
vorzugeben ist.
4. Laden einer gespeicherten Stellung, mit der begonnen werden soll, aus einer Textdatei,
deren Namen von der Spielern vorzugeben ist.
5. Ausgabe der aktuellen Matrix auf dem Bildschirm.
d) Das Hauptprogramm soll das Spiel leiten. Es muß also gewährleisten, dass abwechselnd
gezogen wird (Verwendung obiger Funktionen), bis einer der Spieler gewinnt oder bis
entschieden wird, das Spiel abzubrechen. Dabei soll nach jedem Zug die aktuelle Stellung
auf dem Bildschirm erscheinen (Funktion in 5.).
e) Bei Abbruch des Spiels sollen die Spieler befragt werden, ob sie den aktuellen Spielstand
speichern wollen. Falls ja, soll die Funktion aus 4. aufgerufen werden.
f ) Am Anfang sollen die Spieler ihre Namen eingeben, welche Figur sie übernehmen und das
Datum. Weiterhin sollen sie entscheiden können, ob sie ein bereits in einer Datei gespeichertes begonnenes Spiel weiterspielen wollen.
Es soll möglich sein, wiederholt zu spielen. Schreiben Sie eine Funktion, die in zwei Textdateien, die die Namen der Spieler tragen, für jedes Spiel, das beendet wird (also nicht
abgebrochen), in einer Zeile folgende Informationen einträgt:
Datum Figur Gewonnen/Verloren Anzahl_Spielzuege
Ist die Datei bereits vorhanden (da schon Spiele unter dem Namen geführt wurden), sollen
die Daten angehängt werden! Es ist also in jedem Fall zu empfehlen, die Dateien mit dem
Zugriffsmodus ”a” zu öffnen.