Im ersten Projekt des SoPra26b soll das einfache Kartenspiel 6-Karten-Golf (in der SoPra-Variante) als Kotlin-Anwendung unter Verwendung des BoardGameWork realisiert werden.
6-Karten-Golf ist ein Kartenspiel für 2-4 Spieler und wird mit einem Standard-Blatt bestehend aus 52 Karten gespielt:
{Kreuz, Pik, Herz, Karo} x {2, 3, 4, 5, 6, 7, 8, 9, 10, Bube, Dame, König, Ass}
Zu Beginn des Spiels bekommt jede*r Spielende (geheim) sechs Karten, die vor ihm in 2 Reihen à 3 Karten verdeckt ausgelegt werden. Die übrigen Karten werden als Nachziehstapel verdeckt in die Mitte gelegt. Die oberste Karte des Nachziehstapels wird dann aufgedeckt und neben den Nachziehstapel als Ablagestapel gelegt. Vor dem eigentlichen Beginn des Spiels deckt jede*r Spielende reihum zwei Karten auf („Aufdeckrunde“). Jede*r Spielende ist hier ein mal am Zug und deckt zwei Karten gleichzeitig auf.
Ziel des Spiels ist es, am Ende die wenigsten Punkte zu haben. Gewertet wird hierbei die Summe aller Karten, mit folgenden Werten:
Beispiele für die Punkteberechnung:
→ 0 + 10 + 1 - 2 + 0 = 9 Punkte
Beginnend bei der*dem ersten Spielenden nach der Aufdeckrunde sind reihum alle Spielenden an der Reihe und führen einen der Spielzüge durch.
Ist einer der beiden Stapel leer, kann die entsprechende Aktion nicht durchgeführt werden.
Hat ein*e Spieler*in nach dem Ende der Aktion eine Reihe von Karten mit identischem Kartenwert (z.B. drei Könige), werden die Karten der Reihe entfernt und auf den Ablagestapel gelegt (von links nach rechts). Damit reduziert sich die Anzahl der zu wertenden Karten.
Das Spiel endet, wenn ein*e Spieler*in in einem Zug alle Karten im eigenen 2×3-Raster aufgedeckt hat oder beide Reihen durch gleiche Kartenwerte abgelegt hat und danach jede*r andere Spieler*in noch einmal am Zug war.
Nun werden alle verbliebenen verdeckten Karten aller Spieler*innen aufgedeckt und ggf. die Regel zum Ablegen von Reihen durch identische Kartenwerte angewendet.
Gewonnen hat bei Spielende die*der Spieler*in mit der niedrigsten Punktzahl. Spieler*innen, die beide Reihen abgelegt haben, gewinnen automatisch („Punktzahl=-Unendlich“). Bei Punktegleichstand wird das Spiel als unentschieden gewertet. Die übrigen Platzierungen ergeben sich entsprechend der Punktzahl.
Das zu entwickelnde Programm soll den Spielablauf steuern und für die Einhaltung der Spielregeln sorgen. Hierbei sollen zusätzliche Features umgesetzt werden, die nicht direkt auf den Spielregeln basieren: