![UNI](/grafiken/uni_logo.gif) |
Didaktik der
Informatik |
![DdI](/grafiken/ddi_1.gif) |
Hausaufgabe zum Erwerb eines Scheins zur
Vorlesung Algorithmen, Daten und Programme I, WS 97/98
Programmierung des Strategiespiels "Vier gewinnt"
Spielregeln:
Das reale Spielbrett steht aufrecht und besteht aus sieben Schächten,
die jeweils 6 Steine aufnehmen können. Am Spiel nehmen zwei
Spieler A und B teil. Spieler A besitzt rote, Spieler B gelbe Steine. Jeder
Spieler wirft abwechselnd einen Stein seiner Farbe in einen der Schächte.
Der eingeworfene Stein fällt bis zur tiefsten, noch freien Position
des jeweiligen Schachtes. Ziel des Spiels ist es, als erster vier Steine
der eigenen Farbe aufeinanderfolgend in einer Reihe, einer Spalte oder
in einer Diagonalen zu bekommen. Ist kein Schacht mehr frei und hat kein
Spieler einen Vierer gebaut, geht das Spiel unentschieden aus.
Aufgabenstellung:
Implementieren Sie unter Verwendung der funktionalen Sprache Standard-ML
das Spiel "Vier gewinnt", wobei ihre Funktion sowohl die direkte Angabe
von Spielzügen als auch die automatische Berechnung eines Spielzuges
ermöglichen soll. Kommentieren Sie Ihr Programm und dokumentieren
Sie die Entwicklung und Funktionsweise der angewendeten Strategien zur
Bewertung der Computerzüge. Als Schnittstelle ist folgende Funktion
zur Verfügung zu stellen:
xxxSpielzug(Spielfeld:Farbe list,Stein:Farbe,Schacht:int)
Ersetzen Sie die Zeichen xxx durch ihre Initialen und einen beliebigen
Buchstaben.
Der Eingabeparameter Spielfeld enthält den derzeitigen Spielstand
in einer Liste der Form
[x11 ,x12 ,x13 , .. , x17 ,x21
,x22 , .... , x67]
wobei xij das Spielfeld der i-ten Zeile und des j-ten
Schachtes beschreibt und xij vom Typ
datatype Farbe = leer|gelb|rot;
ist. Der Parameter Stein beschreibt die Farbe des Steins, der gesetzt
werden soll. Wenn der Computer einen Spielzug berechnen soll, enthält
der Eingabeparameter Schacht eine 0. Anderenfalls wird mit Schacht
der Schacht (1 bis 7) angegeben, in den der Stein geworfen werden soll.
Die Funktion liefert als Rückgabewerte in einem Tupel des Typs
(Farbe list, int, int):
-
das gegebenenfalls veränderte Spielfeld vom Typ Farbe list,
-
einen int-Wert mit der gegebenenfalls ermittelten Schachtnummer und
-
einen int-Wert, der für die folgenden Nachrichten steht:
0 : keine Nachricht;
1 : Spiel gewonnen,
2 : Spiel verloren,
3 : Spiel unentschieden |
4 : Schacht schon voll,
5 : Schachtnummer existiert nicht,
6 : Farbe nicht am Zug,
7 : ??? |
Alle weiteren erforderlichen Funktionen dürfen nicht sichtbar sein,
müssen also innerhalb der Funktion xxxSpielzug implementiert werden.
Abnahme:
Am 17. März 1998 werden die Programme in einem Wettkampf nach dem
KO-System präsentiert. Der Wettbewerb findet voraussichtlich in Raum
2.07 ab 10 Uhr statt (unter SML Version 0.93). Die Anmeldung hierzu muss
unter Abgabe der Dokumentation und einer MS-DOS-formatierten Diskette mit
der Programmdatei bis zum 16. März 1998, 10 Uhr erfolgt sein.
Bewertungskriterien sind u. a.:
- die angewendete Strategie zur Berechnung der Spielzüge,
- die Vollständigkeit der Implementierung des Spiels,
- der funktionale Programmierstil,
- die Dokumentation des Programms,
- der erzielte Platz im Wettbewerb.
Anmerkung:
Literatur zur Programmierung von Spielen und zu ML wird
im Semesterapparat ausgelegt.
Es wird dringend empfohlen, weitere Literatur zu suchen
und zu studieren!!
|
Benutzer: gast
Besitzer: hwsystem Zuletzt geändert am:
|
|
|