Kommunikationsprotokoll

Achtung, die hier angegebene Schnittstelle kann sich ggf. noch ändern! Bitte schauen Sie, bevor Sie Ihr Programm einsenden, noch einmal nach, ob Ihr Programm der dann gültigen Schnittstellendefinition genügt.

Sämtliche Kommunikation erfolgt über die Standardein- bzw. -ausgabe. Hierbei wird jedes Datum einzeln in einer Zeile übermittelt.

Zunächst erhalten beide Programme die Ausgangssituation. Diese können Sie in eine interne Darstellung umwandeln und ggf. bereits einige statische Berechnungen auf diesen durchführen. Hierbei wird zunächst die Größe des Spielfelds übertragen. Alle Objekte auf dem Spielfeld werden dann über ihre Koordinaten kodiert (die Position (1,1) entspricht der linken oberen Ecke des Spielfelds). Bei allen zu übertragenden Koordinaten wird zuerst die x- und dann die y-Komponente übertragen.

Als nächstes wird die Lochposition als x- und y-Koordinate übermittelt.

NEU !!! Nun wird die maximale Anzahl möglicher Züge übertragen. Die Anzahl bezieht sich auf die Züge eines Spielers. Hat nach dieser Anzahl von Zügen kein Spieler alle seine Würmer ins Loch befördert endet die Partie und der Spieler mit den meisten verbleibenden Würmern hat verloren.

Als weitere Objekte werden zunächst die Hindernisse, die eigenen Würmer, dann die gegnerischen Würmer und abschließend, eine Mittelung, ob das Programm beginnt, oder nicht. Die Übertragung der weiteren Objekte erfolgt genau in dieser Reihenfolge. Die einzelnen Blöcke von Koordinaten werden durch Schlüsselwörter voneinander getrennt. Die Würmerpositionen werden durch die drei Positionen von Kopf, Mitte und Schwanz übertragen. Die Reihenfolge, in der die Würmer übertragen werden, bestimmt gleichzeitig die Nummer, über die sie benannt werden (bei eins beginnend). Diese Nummer bleibt für einen kompletten Spielablauf fest.

Hier die Eingabe der Anfangssituation für den Spieler mit den roten Würmern aus dem Beispiel von oben:

12
    Breite der Welt
13
    Höhe der Welt
7
    Lochposition x-Komponente
4
    Lochposition y-Komponente
200
    Maximale Zuganzahl
Hindernisse
    Schlüsselwort
4
    1. Hindernis x-Komponente
2
    1. Hindernis y-Komponente
5
    2. Hindernis x-Komponente
2
    2. Hindernis y-Komponente
9
    3. Hindernis x-Komponente
2
    3. Hindernis y-Komponente
9
    4. Hindernis x-Komponente
3
    4. Hindernis y-Komponente
...
    Weitere Hindernisse mit x- und y-Komponenten
Eigene Wuermer
    Schlüsselwort
2
    1. eigener Wurm Kopf x-Komponente
11
    1. eigener Wurm Kopf y-Komponente
2
    1. eigener Wurm Mitte x-Komponente
12
    1. eigener Wurm Mitte y-Komponente
2
    1. eigener Wurm Schwanz x-Komponente
13
    1. eigener Wurm Schwanz y-Komponente
4
    2. eigener Wurm Kopf x-Komponente
11
    2. eigener Wurm Kopf y-Komponente
4
    2. eigener Wurm Mitte x-Komponente
12
    2. eigener Wurm Mitte y-Komponente
4
    2. eigener Wurm Schwanz x-Komponente
13
    2. eigener Wurm Schwanz y-Komponente
...
    Weitere eigene Würmer mit x- und y-Komponenten von Kopf, Mitte und Schwanz
Gegnerische Wuermer
    Schlüsselwort
3
    1. gegnerischer Wurm Kopf x-Komponente
11
    1. gegnerischer Wurm Kopf y-Komponente
3
    1. gegnerischer Wurm Mitte x-Komponente
12
    1. gegnerischer Wurm Mitte y-Komponente
3
    1. gegnerischer Wurm Schwanz x-Komponente
13
    1. gegnerischer Wurm Schwanz y-Komponente
5
    2. gegnerischer Wurm Kopf x-Komponente
11
    2. gegnerischer Wurm Kopf y-Komponente
5
    2. gegnerischer Wurm Mitte x-Komponente
12
    2. gegnerischer Wurm Mitte y-Komponente
5
    2. gegnerischer Wurm Schwanz x-Komponente
13
    2. gegnerischer Wurm Schwanz y-Komponente
...
    Weitere gegnerische Würmer mit x- und y-Komponenten von Kopf, Mitte und Schwanz
Erster
    Schlüsselwort für beginnenden Spieler ('Zweiter' Schlüsselwort für den nicht beginnenden Spieler

Der Spieler, welcher das Schlüssselwort 'Erster' erhalten hat, beginnt mit der Berechnung seines Zugs und gibt seinen ersten Zug dann aus. Der Spieler, welcher das Schlüssselwort 'Zweiter' erhalten hat, muß eine Eingabe erwarten, in der er den Zug seines Gegners erwartet.

Die Programme berechnen nun abwechselnd ihre Züge und geben Sie aus. Die Ausgabe des einen Spielers ist gleichzeitig die Eingabe des anderen und umgekehrt. Ein Zug setzt sich immer durch die Angabe der Wurmnummer des ziehenden Wurms und einer Himmelsrichtung (N,O,S oder W) zusammen. Das Feld welches in der entsprechenden Richtung vom Kopf des gewählten Wurms liegt muß natürlich frei sein.

Im Beispiel wären folgende Züge möglich:

Ausgabe erster Spieler (Eingabe zweiter Spieler):
2
          Erster Spieler wählt seinen zweiten Wurm
N
          Wurm wird nach oben (Richtung Norden) gezogen
Ausgabe zweiter Spieler (Eingabe erster Spieler):
1
          Zweiter Spieler wählt seinen ersten Wurm
N
          Wurm wird nach oben (Richtung Norden) gezogen
Ausgabe erster Spieler (Eingabe zweiter Spieler):
2
          Erster Spieler wählt seinen zweiten Wurm
O
          Wurm wird nach rechts (Richtung Osten) gezogen
usw. ...

Kann ein Spieler in einer Situation keinen Zug machen, gibt er anstelle eines Zugs das Schlüsselwort 'Kann nicht' aus. Dies ist wie gewöhnlich auch die Eingabe für den anderen Spieler.
Hat ein Spieler gewonnen, so terminiert sein Programm nach Ausgabe des letzten Zugs. Sein Gegner (der Verlierer) erhält das Schlüsselwort 'Ende', worauf sein Programm ebenfalls enden muß.
Geben beide Programme nacheinander die Meldung 'Kann nicht' aus endet das Spiel unentschieden. Sie erhalten beide die Meldung 'Ende'.


Frank Huch
Last modified: Wed Jul 2 14:42:59 MET DST 1997