2. Ameisenvolk
Dein Programm steuert die Ameisen mit Hilfe von Nachrichten über einen Socket.
Ablauf des Programms
Initialisierung
Beim Start des Programms registriert sich dein Programm beim Discovery-Service.
action: register
type: hive
ip:
Die IP-Adresse auf der dein Programm Nachrichten empfangen wird.port:
Der Port über den dein Programm Nachrichten empfangen wird.
Als Antwort sendet der Discovery-Service OK
oder ERROR
.
Bei ERROR
muss das Programm abbrechen.
Spielrunde
Request
Das Programm öffnet einen Socket unter dem oben definierten Port.
Auf diesem Socket wartet das Programm auf Nachrichten.
Für jede Spielrunde erhält das Programm eine Nachricht mit “action”: “round”
Diese Nachricht enthält neben der Action:
count
: Wieviele Ameisen umfasst dein Volkants
: Ein Array von JSON-Objekten pro Ameise.
Pro Ameise enthält die Nachricht die Angaben:
xcoord
: Die X-Koordinate relativ zum eigenen Ameisenhügelycoord
: Die Y-Koordinate relativ zum eigenen Ameisenhügelfood
: Ob die Ameise Nahrung trägt (1) oder nicht (0).area
: Angaben zu den Feldern in einem 5*5 grossen Bereich um die Ameise.
Angenommen die Weltkarte sieht aktuell so aus:
Dann erhält der grüne Spieler diese Nachricht:
{ "action": "round", "count": 2, "ants": [ { "xcoord": 0, "ycoord": -1, "food": 1, "area": [ "water", "empty", "empty", "empty", "empty", "water", "empty", "home", "empty", "friend", "water", "empty", "friend", "empty", "empty", "water", "empty", "empty", "empty", "food", "water", "empty", "empty", "empty", "empty" ] }, { "xcoord": 2, "ycoord": 0, "food": 0, "area": [ "water", "water", "water", "water", "water", "empty", "empty", "empty", "empty", "empty", "home", "empty", "friend", "empty", "empty", "friend", "empty", "empty", "empty", "empty", "empty", "empty", "food", "empty", "empty" ] } ] }
Response
Das Programm antwortet mit den Aktionen der einzelnen Ameisen. Die Reihenfolge ist dabei die gleiche wie in der Nachricht.
[ "N", "S" ]
Hier würde die linke Ameise nach Norden in den Ameisenhügel laufen. Die rechte Ameise läuft nach Süden in Richtung der Nahrung.
Spielende
Erhält das Programm eine Nachricht mit
“action”: “quit”
,“reason”:
Grund für das Beenden
so wird der Socket geschlossen und das Programm beendet.