Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ===== 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 <code txt> GAMES? </code> Server antwortet z.B.: <code txt> GAMES 2 4 2 100 60 funny game 2 1 100 100 tete a tete </code> 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. <code txt> NEWGAME public einsame insel 4 100 60 ..... </code> 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. <code txt> ERROR Spielfeld zu gross. </code> === Mitspielen === Der Spieler sendet "join " gefolgt vom Name des Spiels. <code txt> JOIN einsame insel </code> Der Server antwortet mit zwei Zeilen, entweder <code txt> OK Please wait </code> oder mit einer Fehlermeldung, z.B. <code txt> ERROR Das Spiel existiert nicht oder ist schon im Gange. </code> ==== Spielstart ==== Der Server sendet eine Zeile "START", gefolgt von einer Zeile mit Anzahl Spielern, Breite und Höhe des Spielfeldes, gefolgt vom Spielfeld. <code txt> START 4 100 60 .... </code> 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. <code txt> MOVE up </code> 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. <code txt> ALIVE 4209 </code> 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: <code txt> UPDATE 3 30 42 0 25 41 . 88 21 A </code> 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. ffprog/ffprogjava2016/projekt/protokoll.txt Last modified: 2016/10/28 13:56by Ivo Blöchliger