sopra:25b:projekt2

Projekt 2: Nova Luna

Im zweiten Projekt des SoPra25b soll das Brettspiel Nova Luna als Kotlin-Anwendung unter Verwendung des BoardGameWorks umgesetzt werden.

Nova Luna ist ein abstraktes Legespiel, bei dem die Spieler:innen Aufgabenplättchen ziehen und an ihre Auslage anlegen, um mit geschicktem Kombinieren Aufgaben möglichst schnell zu erfüllen.

Hinweis: Sollte es Diskrepanzen zwischen der deutschen und der englischen Ausführung der Regeln geben, gilt die englische Version.

Nova Luna ist ein Legespiel für 1–4 Personen. Im Rahmen dieses Projekts muss der Solo-Modus nicht implementiert werden.

Das Programm steuert den Spielablauf und sorgt für die Einhaltung der Spielregeln. Folgende Zusatzfunktionen sollen enthalten sein:

  • Die Reihenfolge der Spielenden soll vor Spielstart sowohl frei wählbar konfiguriert als auch randomisiert werden können.
  • Vor Spielstart soll ausgewählt werden können, ob es das „erste Spiel“ ist, bei dem nur 16 bzw. 18 der 21 Scheiben verwendet werden.
  • Das Spiel soll im Hotseat-Modus und im Netzwerkmodus über das BGW-Net-Modul spielbar sein.
  • Ein Spiel soll gespeichert und später fortgesetzt werden können (im Netzwerkmodus ist das Speichern deaktiviert).
  • Es sollen Bots zur Verfügung stehen, darunter ein einfacher Zufalls-Bot und ein starker Bot für ein abschließendes Bot-Turnier. Auch reine Bot-Spiele sind möglich. Die Simulationsgeschwindigkeit soll einstellbar sein.
  • Kein Bot-Zug darf länger als 10 Sekunden benötigen und muss regelkonform sein.
  • Das Spiel soll über Undo- und Redo-Funktionen verfügen, sodass Züge bis zum Beginn des Spiels zurückgenommen werden können (im Netzwerkmodus ist dies deaktiviert).
  • Eine PDF-Spielanleitung muss beigelegt werden.

Laut Regeln sollen beim Aufbau „beliebig viele“ Nachziehstapel von Plättchen gebildet und dann von zufälligen Nachziehstapeln wieder aufgefüllt werden. Um einen einheitlichen Ablauf im Bot-Turnier (siehe unten) zu gewährleisten, soll in der SoPra-Variante von Nova Luna genau ein Nachziehstapel realisiert werden. Dieser Nachziehstapel soll offen einsehbar sein, um insbesondere für das Bot-Turnier interessantere Züge zu ermöglichen.

Die Regel, wann ein nicht direkt an die Aufgabe angrenzendes Plättchen dennoch für diese gezählt werden kann, ist leider teilweise missverständlich formuliert. Daher geben wir hier eine speziell für das SoPra einheitliche „Informatik-Style“ Semantik an, die von allen Gruppen gleichermaßen implementiert werden muss:

Ein Plättchen z der Farbe f kann für die Erfüllung einer Aufgabe der Farbe f auf Plättchen a gezählt werden gdw. es einen Pfad (a, p1, p2, … , pn, z) gibt, für den gilt: aufeinanderfolgende Elemente auf dem Pfad liegen horizontal oder vertikal nebeneinander aus und jedes Plättchen pi hat Farbe f.

Das heißt, es können Ketten einheitlicher Farbe auf beliebigen rechtwinklig verlaufenden Pfaden für die Erfüllung von Aufgaben herangezogen werden. Insbesondere aber dürfen dadurch auch Elemente doppelt durchlaufen (aber nur einmal gezählt) werden. Damit ist zum Beispiel die „vier mal blau“ Aufgabe auf dem gelben Plättchen hier erfüllt:

Laut Spielregeln „dürfen“ Spieler:innen erfüllte Aufgaben mit einer eigenen Scheibe abdecken. Im SoPra soll dies automatisch und sofort passieren, wenn durch das Legen eines Plättchen Aufgaben als erfüllt gewertet werden können.

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.

Nova Luna enthält zahlreiche verschiedene Plättchen. Eine CSV-Datei mit allen Plättchen gibt es hier:

  • sopra/25b/projekt2.txt
  • Zuletzt geändert: 2025/05/27 10:14
  • von daniel.busch