ffprog:ffprogjava2016:projekt:protokoll

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ffprog:ffprogjava2016:projekt:protokoll [2016/10/11 14:38] – [Verbindungsaufbau und Aushandeln des Spiels] Ivo Blöchligerffprog:ffprogjava2016:projekt:protokoll [2016/10/28 13:56] (current) Ivo Blöchliger
Line 1: Line 1:
 +===== 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.