-
Notifications
You must be signed in to change notification settings - Fork 0
Home
all messages must be encoded with msgpack.
{
"type": "connect",
"username": "<username>",
"password": "<geheim>",
"async": False,
}
username
ist ein beliebiger UTF-8-String mit bis zu 32 Zeichen. Die Antwort ist wie bei whoami
. Andere Befehle können erst nach einem Connect geschickt werden.
password
ist ein beliebiger UTF-8-String mit bis zu 32 Zeichen. Wenn man sich neu verbindet, kann die Verbindung nur dann übernommen werden, wenn man das selbe password mit angibt.
async
ist ein boolean (default False). Wenn auf True gesetzt bekommt man asynchrone Informationen. Wie z.B. Aktionsbefehle aller Spieler.
{
"type": "move",
"direction": "w",
"distance": 1
}
direction
kann "w", "a", "s", oder "d" (klein geschrieben!) sein.
distance
ist per default 1, gibt die anzahl der Blöcke an die zurückgelegt werden sollen.
("MOVE", id, position_int, direction, distance)
Diese Antwort erhalten alle Spieler die beim connect
async=True
gesetzt haben
id
ist String. Es ist eine eindeutige Spielerkennzeichnung (z.B Startposition)
position_int
ist ein Tupel (x, y)
beschreibt den Block auf dem sich der Spielert mit der angegeben id befunden hat. (0, 0)
ist die Position in der linken oberen Ecke. x
beschreibt die Spalte, y
die Zeile.
direction
und distance
werden aus dem gesendeten Befehl übernommen.
{
"type": "bomb",
"fuse_time": 5
}
fuse_time
ist per default 5, gibt die Anzahl an Sekunden an, bis die Bombe explodieren soll.
("BOMB", id, position_int, fuse_time, state, extra_info)
Diese Antwort erhalten alle Spieler die beim connect
async=True
gesetzt haben
id
ist String. Es ist eine eindeutige Spielerkennzeichnung (z.B Startposition)
position_int
ist ein Tupel (x, y)
Nähere Beschreibung s. o.
fuse_time
gibt die Anzahl der Sekunden an, bis die Bombe explodiert.
state
ist ein String. Direkt nach dem Platzieren hat er den Wert "ticking"
.
extra_info
ist als Antwort direkt nach dem Platzieren immer None. Diese Paket wird auch asynchron verschickt. Die Tablle, welche Information extra_info
enthält kann bei der Beschreibung von what_bombs
weiter unten nachgelesen werden.
{
"type": "whoami",
}
("WHOAMI", [color, id, self._top, self._left])
color
ist ein Triple von Ganzzahlen von 0 - 255. RGB
id
ist die Startposition
{
"type": "map",
}
("MAP", "ggWg...\ngWM...")
Die Map wird als string übertragen, jeder Block ist wird als ein Zeichen dargestellt. Die Zeilen sind mit newlines begrenzt.
{
"type": "what_bombs"
}
("WHAT_BOMBS", [
(position_int, update_timer, state, extra_info), ...
])
position_int
ist ein Tupel (x, y)
Nähere Beschreibung s. o.
update_timer
gibt die Zeit in Sekunden an, wie lange die Bombe in dem aktuellen state
noch verbleibt.
state
ist ein String, ist der Name des akutellen Zustandes
|-----------|----------|-----------|
| `state` | tödlich | Dauer |
|-----------|----------|-----------|
| ticking | nein | variabel |
| exploding | ja | 0.2s |
| burning | ja | 1.5s |
| hiding | nein | |
|-----------|----------|-----------|
Bomben mit dem state
hiding
werden im nächsten update Zyklus entfernt und sind höchstwahrscheinlich nicht anzutreffen. Dieser Zustand wird aber aufgefürt, da bei aktivierten async
bei Zustandsänderungen diese Informationen verschickt werden.
extra_info
beinhaltet informationen abhängig vom state
.
im state
:
-
ticking
wirdNone
übertragen. -
exploding
oder -
burning
werdenfire_trails
übertragen. -
hiding
werden diedestroyed_walls
mitgeteilt.
fire_trails
ist Liste von Positionstuplen. Die Positonen sind die Endpunkte der Feuerstrahlen der Bombe. Alle Positionen die zwischen der Bombenposition und den Enpostionen liegen sind tödlich. Wenn eine Bombe in einer Richtung am Ende des Maprandes liegt, kann es sein, dass auch das Ende des Feuerstrahls mit der Position der Bombe übereinstimmt. Wenn eine Mauer durch die Bombe zerstört wird, ist das Ende des Feuerstrahls die selbe Position wie die Mauer. Hier ein Beispiel
[(0,0), (0,0), (2,0), (0,2),]
destroyed_walls
ist eine Liste mit Positionstuplen. Die Liste enthält bis zu vier Einträge. Es ist möglich, dass bei Zwei Bomben die selbe Mauer zerstört wird. In diesem Fall werden nur der ersten Bombe Punkte gutgeschrieben und die Mauer wirklich entfernt. Es kann aber sein, dass auch bei der zweiten Bombe diese Mauer noch auftaucht.
{
"type": "what_foes"
}
("WHAT_FOES", [
(position_int, direction, id, name), ...
])
position_int
ist ein Tupel (x, y)
Nähere Beschreibung s. o.
direction
kann "w", "a", "s", oder "d" sein.
id
ist String. Es ist eine eindeutige Spielerkennzeichnung (z.B Startposition)
name
ist ein String.
{
"type": "points"
}
("OK", [(id, name, points), ...])
id
ist String. Es ist eine eindeutige Spielerkennzeichnung (z.B Startposition)
name
ist ein String. Der Spielername.
points
ist ein Integer. Die Punkte des Spielers.
...