Inhaltsverzeichnis

Projekt 2: Bonsai

Im zweiten Projekt des SoPra25a soll das Brettspiel Bonsai als Kotlin-Anwendung unter Verwendung des BoardGameWork realisiert werden.

Bonsai ist ein strategisches Brettspiel, bei dem die Spieler:innen wunderschöne Bonsai-Bäume gestalten, indem sie geschickt Äste, Blätter und Dekorationen hinzufügen. Ziel ist es, durch ästhetische und thematische Entscheidungen den schönsten Baum zu kreieren und die meisten Punkte zu sammeln.

Anforderungen an das Programm

Bonsai erlaubt das Spielen für eine einzelne Person (Solo-Modus). Diese Option ist für das zu entwickelnde Programm nicht notwendig und muss nicht implementiert werden. Außerdem muss die Variante für Fortgeschrittene: „Tokonoma“ nicht implementiert werden.

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:

Bot-Turnier

Am Ende des Projekts findet ein Turnier statt, bei dem die Bots der Gruppen in 1v1-Spielen über den Netzwerkmodus gegeneinander antreten. Der genaue Ablauf des Turniers wird im Laufe des Projekts noch festgelegt.

Ein Bot-Zug darf dabei 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.

Import-Datei mit Spielteilen

Bei Bonsai gibt es 5 verschiedene Arten von Karten (Helper, Master, Growth, Point, Tool). Für jede Kartenart stellen wir eine CSV-Datei zur Verfügung, die die Kartenverteilung für 2,3,4 Spieler darstellen. Jede karte hat eine eindeutige ID, welche sich in den CSV-Dateien befindet.

Die Anzahl der Karten für 3/4 Spieler in den CSV-Dateien ist korrekt. Die englische Anleitung hat einen Schreibfehler. Es sollte heißen:
Prepare the deck of Zen cards, with:
4 players: use all the cards
3 players: remove the 4 cards for 4 players, marked with …
2 players: remove the 15 cards for 3 and 4 players, marked with …

Regelklarstellungen 1

Meditate: Karte von Board ziehen mit Aktion „Draw tile to personal supply“
Es werden in jedem Fall alle zu ziehenden Tiles in den personal supply gelegt und können für den aktuellen Zug verwendet werden.

Aufdecken von neuen Zen-Karten
Nachdem eine Karte vom Board gewählt wurde, wird sofort die nächste Karte aufgedeckt. Alle Aktionen (Tiles ziehen, Aktionen von gezogener Karte), die durch das Ziehen der Karte ausgelöst werden, werden erst nach dem Aufdecken ausgeführt.

Rückbau seines Baumes
Im unwahrscheinlichen Fall, dass an einem Baum kein Wood Tile mehr angelegt werden kann, so kann laut Regeln der Baum am Anfang des Zuges so zurückgebaut werden, dass wieder ein Wood Tile angelegt werden kann. Hierbei muss die minimale Anzahl an Tiles entfernt werden, um wieder einen gültigen Spielstand zu erreichen. Zudem muss in diesem unwahrscheinich Fall der Baum nicht zurückgebaut werden, was zu Folge hat, dass in diesem Zug dann aber auch kein Wood Tile im Baum platziert werden kann.

Ablehnen von Goals
Einmal abgelehnte Goals sind für den weiteren Spielverlauf gesperrt. Dies gilt auch in dem besonderen Fall, dass beim „Rückbau“ des Baumes ein bereits vorher abgelehntes Goal erneut erreicht werden könnte.

Claimen von Goals
Nach dem Legen jedes Tiles muss überprüft werden, ob ein Goal erreicht wurde. In diesem Fall muss sofort nach dem Legen des Tiles entschieden werden, ob das Goal geclaimed werden soll, oder nicht.

Regelklarstellungen 2

Goal Tiles konfigurieren
Beim Start des Programmes müssen die Goal Tile Farben konfiguriert werden. Sie sollen auch zufällig gewählt werden können. Hierbei dürfen nur die Farben gewählt werden, die auch im Spiel vorhanden sind und es dürfen nicht weniger als 3 Goal Tile Farben ausgewählt werden. In einem Netzwerk-Spiel entscheidet das „Host“-Spiel, welche Goal Tile Farben verwendet werden.

Punkteberechnung
Zur Nachverfolgung der Punkte soll die im Spiel vorhandene Punktetafel nachimplementiert werden. Hierbei ist die Aufschlüsselung in die verschiedenen Kategorieren wichtig. Das Design ist jeder Gruppe selbst überlassen.

Ausrichtung der Töpfe
In der Anleitung werden die Spieltöpfe teilweise in verschiedenen Ausrichtungen dargestellt (also teilweise gespiegelt). Im SoPra soll der Spieltopf so implementiert und platziert werden, sodass sich der golde Riss auf der rechten Seite und der Stamm sich auf der linken Seite befindet.

Regelklarstellungen 3

Helper Karten
Bei Helper-Karten, darf auch kein Plättchen platziert werden. Außerdem darf auch das zweite Symbol vor dem ersten Symbol ausgewertet/gespielt werden.

Aktion: Cultivate
In der Aktion „Cultivate“ darf auch kein Plättchen gelegt werden.
Die Aktion „Cultivate“ kann auch dann ausgeführt werden, wenn keine Plättchen im privaten Vorrat vorhanden sind. Dies führt dazu, dass in diesem Zug effektiv nichts passiert. (Es wird gepasst)

Platzieren von Plättchen
Jedes Platzieren von Plättchen (und auch das Entfernen von Plättchen), muss einen validen Spielstand erzeugen. Das bedeutet, dass die Bedingungen (wie sie in „Cultivate“ definiert sind) für jedes Plättchen zu jedem Zeitpunkt gelten muss.

Bot Aktionen im Turnier
Wenn wiederholt im Bot-Turnier beide Bots „Cultivate“ ohne Platzierung von Plättchen durchführen (effektiv „Passen“), wird das Spiel als „unentschieden“ gewertet und das Spiel muss wiederholt werden. Sollten sich andere Endlos-Schleifen des Spielstandes ergeben, gilt diese Regel analog.