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.