Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| ffprog:ffprogjava2016:projekt:protokoll [2016/10/11 14:44] – [Verbindungsaufbau und Aushandeln des Spiels] Ivo Blöchliger | ffprog: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? | ||
| + | </ | ||
| + | Server antwortet z.B.: | ||
| + | <code txt> | ||
| + | GAMES | ||
| + | 2 | ||
| + | 4 2 100 60 funny game | ||
| + | 2 1 100 100 tete a tete | ||
| + | </ | ||
| + | Die erste Zeile nach " | ||
| + | |||
| + | Anzahl Spieler total, | ||
| + | |||
| + | === Neues Spiel === | ||
| + | Spieler sendet z.B. | ||
| + | <code txt> | ||
| + | NEWGAME | ||
| + | public | ||
| + | einsame insel | ||
| + | 4 100 60 | ||
| + | ..... | ||
| + | </ | ||
| + | Die zweite Zeile ist entweder " | ||
| + | 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 " | ||
| + | <code txt> | ||
| + | ERROR | ||
| + | Spielfeld zu gross. | ||
| + | </ | ||
| + | |||
| + | === Mitspielen === | ||
| + | Der Spieler sendet "join " gefolgt vom Name des Spiels. | ||
| + | <code txt> | ||
| + | JOIN | ||
| + | einsame insel | ||
| + | </ | ||
| + | Der Server antwortet mit zwei Zeilen, entweder | ||
| + | <code txt> | ||
| + | OK | ||
| + | Please wait | ||
| + | </ | ||
| + | oder mit einer Fehlermeldung, | ||
| + | <code txt> | ||
| + | ERROR | ||
| + | Das Spiel existiert nicht oder ist schon im Gange. | ||
| + | </ | ||
| + | |||
| + | ==== Spielstart ==== | ||
| + | Der Server sendet eine Zeile " | ||
| + | <code txt> | ||
| + | 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 '#' | ||
| + | ==== Spielablauf ==== | ||
| + | === Spielzug === | ||
| + | Die Spieler, die noch am Leben sind, senden Ihren Spielzug, z.B. | ||
| + | <code txt> | ||
| + | MOVE up | ||
| + | </ | ||
| + | wobei nach "MOVE " eines der vier Wörter " | ||
| + | === Antwort des Servers === | ||
| + | Der Server sendet zwei Zeilen, wobei die erste entweder " | ||
| + | <code txt> | ||
| + | ALIVE | ||
| + | 4209 | ||
| + | </ | ||
| + | Ist die Schlange gestorben, steht in einer dritten Zeile noch zusätzlich, | ||
| + | |||
| + | === 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 | ||
| + | </ | ||
| + | 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. | ||