Dr. Matthias Grabert Abteilung Angewandte Informationsverarbeitung 14. Juni 2002
Christian Ehrhardt Blatt 8


Uni Logo



Systemnahe Software (SS 2002)


Abgabetermin 25.06.2002

Ein Spieleserver (10 Punkte)

In diesem Blatt soll ein Server für das Zweipersonenspiel Kalaha geschrieben werden. Der Server wartet zunächst auf zwei Verbindungen, je eine für jeden Spieler. Anschließend wird einer der Spieler zur Abgabe eines Zuges aufgefordert. Nach jedem Zug wird beiden Spielern der aktuelle Spielstand mitgeteilt und der Spieler, der an der Reihe ist, wird zu einem neuen Zug aufgefordert. Wenn das Spiel beendet ist, wird beiden Spielern der Endstand mitgeteilt und die Verbindungen werden beendet. Außerdem soll es für einen Spieler auch möglich sein, statt einem Zug das Spiel aufzugeben. Ebenso sollte der Server das Spiel im Falle eines Fehlers abbrechen können.
Mit zur Aufgabe dieses Blattes gehört es auch, ein Protokoll für die Kommunikation zwischen Spieler und Spieleserver zu entwerfen. Außerdem muß der Server natürlich immer den neuen Spielstand berechnen und entscheiden, wer nun an der Reihe ist. Testen läßt sich das Spiel dann mit Hilfe von nc oder telnet als Client. Behaltet beim Entwurf des Protokolls im Hinterkopf, daß es nicht nur von Menschen, sondern auch von einem Computerprogramm leicht lesbar sein soll.

Das Spiel

Spielbrett
Kalaha wird auf einem Holzbrett gespielt, das aus insgesamt 14 Mulden (Vertiefungen) besteht. Die Mulden A1 bis A7 gehören Spieler A, die Mulden B1 bis B7 gehören Spieler B. In jeder Mulde können Spielsteine liegen. Die Mulden sind wie folgt angeordnet:
  B6 B5 B4 B3 B2 B1  
B7             A7
  A1 A2 A3 A4 A5 A6  
Startaufstellung
Zu Beginn des Spiels liegen in jeder der Mulden A1 bis A6 und B1 bis B6 je 6 Spielsteine, die Mulden A7 und B7 sind leer.
Ende und Ziel
Das Spiel ist beendet, wenn alle Spielsteine sich in den Mulden A7 und B7 befinden, gewonnen hat derjenige Spieler, der mehr Steine in seiner eigenen Mulde ansammeln konnte.
Ein Zug
Ein Zug eines Spielers besteht darin, daß er eine seiner eigenen Mulden leert (A7 bzw. B7 sind nicht erlaubt) und die Steine in die Mulden verteilt, die im Gegenuhrzeigersinn (mathematisch positiv) auf die geleerte Mulde folgen. Je ein Stein pro Mulde. Ausnahme: Spieler A läßt die Mulde B7 aus, Spieler B läßt die Mulde A7 aus.
Kein Zug möglich
Falls ein Spieler keinen Zug mehr machen kann, weil alle seine Mulden leer sind, kommen alle verbliebenen Steine aus den Mulden des Gegners in die 7er Mulde des Gegners. Es ist nicht erlaubt auf einen Zug zu verzichten.

Hinweise



Christian Ehrhardt 2002-06-14