diff --git a/hyperbook/book/spiele/25_hase-und-igel/xml.md b/hyperbook/book/spiele/25_hase-und-igel/xml.md index 5d37e582..f421a2ba 100644 --- a/hyperbook/book/spiele/25_hase-und-igel/xml.md +++ b/hyperbook/book/spiele/25_hase-und-igel/xml.md @@ -1,6 +1,5 @@ --- name: XML-Dokumentation -permaid: xml --- # XML-Elemente des Spiels Hase und Igel diff --git a/hyperbook/book/spiele/26_piranhas/xml.md b/hyperbook/book/spiele/26_piranhas/xml.md new file mode 100644 index 00000000..ef92c33d --- /dev/null +++ b/hyperbook/book/spiele/26_piranhas/xml.md @@ -0,0 +1,177 @@ +--- +name: XML Dokumentation +permaid: xml +--- + +# XML-Elemente des Spiels Piranhas + +Diese Dokumentation beschreibt die spielspezifischen Elemente des [XML-Protokolls](/xml/protokoll) +für das Spiel Piranhas. + +## Spielstatus + +Die folgende XML-Struktur beschreibt den regelmäßig mitgeteilten Spielstatus. +Gesendet wird diese Nachricht immer dann, wenn sich was am Spielfeld ändert, +d.h. wenn ein Spieler einen Zug gespielt hat. + +Ein Status enthält das aktuelle Spielfeld und den zuletzt gespielten Zug. +Das Spielbrett ist ein 2-Dimensionales Grid an Feldern, +mit dem Koordinatenursprung (0 , 0) unten links in der Ecke. +Entsprechend überträgt der Server das Spielfeld aufgeteilt +in die einzelnen Reihen und beginnt dabei mit der untersten Reihe. +Die Reihen werden von links nach rechts beschrieben. +Der zuletzt im Spiel gespielte Zug `lastMove` ist wie ein gewöhnlicher +[Zug](/spiele/26_piranhas/xml#zug-senden) aufgebaut. + +```xml + + + + + + UP_RIGHT + + + + TWO_S + TWO_S + TWO_S + EMPTY + EMPTY + EMPTY + EMPTY + TWO_L + TWO_M + EMPTY + + + ONE_S + EMPTY + EMPTY + EMPTY + SQUID + EMPTY + EMPTY + ONE_M + EMPTY + EMPTY + + ... + + EMPTY + TWO_M + ... + TWO_M + EMPTY + + + + + +``` + +### Felder + +Die Felder werden wie folgt codiert: + +- Leeres Feld: `EMPTY` +- Krakenfeld: `SQUID` +- Feld mit Fisch: `TEAM_GRÖßE` (z.B. `ONE_S` für den kleinen Fisch des Spielers 1, meist Rot) + - wobei TEAM `ONE` oder `TWO` ist + - und GRÖßE `S`, `M` oder `L` ist, der Größe des Fisches + +## Spiel betreten ohne Reservierungscode + +Betritt ein beliebiges offenes Spiel: + +```xml + +``` + +Sollte kein Spiel offen sein, wird so ein neues erstellt. +Je nachdem ob `paused` in `server.properties` true oder false ist, +wird das Spiel pausiert gestartet oder nicht. + +## Spielzug + +### Aufforderung + +Wenn der eigene Client am Zug ist, folgt nach dem Spielstatus diese +Aufforderung, dass der Server einen Zug erwartet: + +```xml + + + +``` + +### Zug senden + +Ein Zug im Spiel Pirnhas besteht immer aus einer Startposition, +auf dem ein Fisch des eigenen Teams liegen muss +und einer Richtung, in welcher sich dieser Fisch bewegen soll: + +```xml + + + + LEFT + + +``` + +Die Richtung ist codiert als einer der folgenden acht Optionen: + +`UP` `UP_RIGHT` `RIGHT` `DOWN_RIGHT` `DOWN` `DOWN_LEFT` `LEFT` `UP_LEFT` + +## Spielergebnis + +Wenn das Spiel vorbei ist, erhalten die Clients das Ergebnis der Partie: + +```xml + + + + + SUM + true + + + AVERAGE + true + + + + + + + 0 + 2 + + + + + + 2 + 5 + + + + + + +``` + +Unter `scores` werden jeweils die beiden Spieler mit den erreichten Punkten aufgezählt. +Was genau die Werte in `part` bedeuten, steht in der `definition`. +Für Piranhas ist das die Anzahl der Siegpunkte, +die im Wettkampfsystem angerechnet werden +und die am Ende des Spiel erreichte Schwarmgröße. + +In diesem Beispiel sieht man, dass Spieler 2 mit einer Schwarmgröße von 5 diese Runde gewonnen hat. + +Bei einem Unentschieden erhalten beide Spieler jeweils einen Siegpunkt und der `winner`-Tag führt kein Team: + +```xml + +``` \ No newline at end of file