Inhaltsverzeichnis

Projekt 2

Projekt 2: Faraway

Im zweiten Projekt des SoPra25d soll das Kartenspiel Faraway als Kotlin-Anwendung unter Verwendung des BoardGameWork realisiert werden.

Faraway ist ein taktisches Kartenspiel, in dem die Spieler:innen das geheimnisvolle Land Alula erkunden. Durch geschicktes Ausspielen und Anordnen von Regionskarten entstehen neue Ziele und Wertungen – doch Punkte gibt es erst auf dem Rückweg, wo kluge Planung belohnt wird.

Anforderungen an das Programm

Das zu entwickelnde Programm soll den Spielablauf steuern und für die Einhaltung der Spielregeln sorgen. Zusätzliche Features, die nicht direkt auf den Spielregeln basieren, sollen umgesetzt werden:

Import-Datei mit Spielkarten

Die Datei enthält alle notwendigen Informationen zu den im Spiel verfügbaren Spielkarten, die für die Implementierung des Spiels benötigt werden.

Im Datensatz findet ihr ein Array mit allen Regionskarten sowie Sanctuary-Karten. Die 68 Regionskarten haben dabei die IDs `0` bis `67`, die 45 Sanctuary-Karten die IDs `68` bis `112`. Jede Karte wird durch ein JSON-Objekt beschrieben, das die folgenden Attribute enthält:

{
  "id": Int,
  "sanctuary": Boolean,
  "biome": "none" | "blue" | "green" | "yellow" | "red",
  "time": {
      "night": Boolean,
      "duration": Int
  },
  "wonders": {
      "mineral": Int,
      "animal": Int,
      "plant": Int,
  },
  "clue": Boolean,
  "quest": {
      "fame": Int,
      "prerequisites": {
          "mineral": Int,
          "animal": Int,
          "plant": Int
      },
      "types": ["clue" | "night" | "wonders_animal" | "wonders_mineral" | "wonders_plant" |
          "biome_blue" | "biome_green" | "biome_yellow" | "biome_red" | "biome_all"]
  } | null
}

Das Array `quest.types` beinhaltet die möglichen Aufgabenarten, die für die Karte relevant sind. Eine Karte kann mehrere Aufgabenarten haben (z.B. `biome_yellow` und `biome_blue`) und zählt wie im Bewertungsbeispiel beschrieben. Wenn das Array leer ist, hat die Karte keine Aufgabenarten und der Fame wird immer angerechnet, sobald die Voraussetzungen erfüllt sind.

Sollte eine Karte keine Aufgabe haben, ist das Attribut `quest` gleich `null`.

Bot-Turnier

Am Ende des Projekts findet ein Turnier statt, bei dem die Bots der Gruppen in 1v1-Spielen über den Netzwerkmodus gegeneinander antreten. Hierbei ist zu beachten, dass das Bot-Turnier ausschließlich auf den Pool-Rechnern durchgeführt wird. Es darf kein eigener Rechner für das Turnier verwendet werden. Der genaue Ablauf des Turniers wird im Laufe des Projekts noch festgelegt.

Ein Bot-Zug darf maximal 10 Sekunden Rechenzeit benötigen und muss regelkonform sein. Sollte eine Bot sich nicht an die Spielregeln halten (beabsichtigt oder unbeabsichtigt), wird die Gruppe vom Bot-Turnier ausgeschlossen.