===== Snake Protokoll ===== Das Protokoll findet zwischen dem **Server** und dem **Spieler** statt. ==== Verbindungsaufbau und Aushandeln des Spiels ==== Der **Spieler** kann als erstes folgende Anfragen stellen: === Öffentliche Spiele? === Spieler sendet GAMES? Server antwortet z.B.: GAMES 2 4 2 100 60 funny game 2 1 100 100 tete a tete Die erste Zeile nach "GAMES" enthält die Anzahl verfügbarer Spiele (kann 0 sein!). Danach folgen entsprechend viele Zeilen mit Anzahl Spieler total, Anzahl fehlende Spieler, Breite, Höhe, Name === Neues Spiel === Spieler sendet z.B. NEWGAME public einsame insel 4 100 60 ..... Die zweite Zeile ist entweder "public " oder "private ". Die dritte Zeile enthält den Namen dieses Spiels. Die vierte Zeile enthält die Anzahl Spieler, die Breite und die Höhe des Spielfeldes. Danach folgt die Spezifikation des Spielfeldes (siehe unten). Der Server antwortet mit einer Zeile "OK" oder mit zwei Zeilen "ERROR" plus eine Fehlermeldung. Z.B. ERROR Spielfeld zu gross. === Mitspielen === Der Spieler sendet "join " gefolgt vom Name des Spiels. JOIN einsame insel Der Server antwortet mit zwei Zeilen, entweder OK Please wait oder mit einer Fehlermeldung, z.B. ERROR Das Spiel existiert nicht oder ist schon im Gange. ==== Spielstart ==== Der Server sendet eine Zeile "START", gefolgt von einer Zeile mit Anzahl Spielern, Breite und Höhe des Spielfeldes, gefolgt vom Spielfeld. START 4 100 60 .... Der Spieler antwortet mit dem ersten Spielzug. ==== Spielfeld ==== Ein Spielfeld der Breite $x$ und Höhe $y$ wird in $y$ Zeilen der Länge $x$ (plus ein Zeilenumbruch) gesendet. Folgende Buchstaben sind möglich: * **#** Hashtag: Mauer. Dieses Spielfeld kann nicht betreten werden. * **.** Punkt: freies Feld. * **0** etc. Schlange (0: eigene Schlange, 1,2. etc. Gegner) * **A** Apfel Alle Felder am Rand **müssen** Mauern '#' sein. Die Startfelder werden mit 1,2,etc. markiert. ==== Spielablauf ==== === Spielzug === Die Spieler, die noch am Leben sind, senden Ihren Spielzug, z.B. MOVE up wobei nach "MOVE " eines der vier Wörter "right", "down", "left" und "up" stehen muss. === Antwort des Servers === Der Server sendet zwei Zeilen, wobei die erste entweder "ALIVE" oder "DEAD" ist, gefolgt von der aktuellen Punktzahl in der zweiten Zeile. Z.B. ALIVE 4209 Ist die Schlange gestorben, steht in einer dritten Zeile noch zusätzlich, warum. === Update des Spielfeldes === Spieler, die noch am Leben sind, erhalten z.B. folgende Zeilen: UPDATE 3 30 42 0 25 41 . 88 21 A Die erste Zeile enthält die Anzahl updates (hier 3). Danach folgen zwei Zahlen mit den Koordinaten (0 bis n-1), gefolgt von einem Buchstaben, der den neuen Inhalt an der entsprechenden Position darstellt.