2. Ameisenvolk

Dein Programm steuert die Ameisen mit Hilfe von Nachrichten über einen Socket.

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.

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 Volk
  • ants: Ein Array von JSON-Objekten pro Ameise.

Pro Ameise enthält die Nachricht die Angaben:

  • xcoord: Die X-Koordinate relativ zum eigenen Ameisenhügel
  • ycoord: Die Y-Koordinate relativ zum eigenen Ameisenhügel
  • food: 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"
      ]
    }
  ]
}

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.

Erhält das Programm eine Nachricht mit

  • “action”: “quit”,
  • “reason”: Grund für das Beenden

so wird der Socket geschlossen und das Programm beendet.

  • modul/m321/projekt/ameisenvolk.txt
  • Last modified: 2024/03/13 15:29
  • by msuter