Inhaltsverzeichnis

Projekt 1: Tauchen

Im ersten Projekt des SoPra24d soll das einfache Kartenspiel „Tauchen“ als Kotlin-Anwendung unter Verwendung des BoardGameWork realisiert werden.

Material und Aufbau

Tauchen ist ein Kartenspiel für 2 Spieler und wird mit einem Standard-Blatt bestehend aus 52 Karten gespielt:

{Kreuz, Pik, Herz, Karo} × {2, 3, 4, 5, 6, 7, 8, 9, 10, Bube, Dame, König, Ass}

Zu Beginn des Spiels erhält jeder Spieler fünf verdeckte Handkarten. Die übrigen Karten bilden einen Nachziehstapel. Zusätzlich hat jeder Spieler einen Sammelstapel, der zu Beginn des Spiels leer ist. In der Tischmitte können während des Spiels 0-3 Karten liegen und gibt es einen offenen Abwurfstapel, der zu Beginn leer ist.

Ziel des Spiels

Ziel des Spiels ist es, in der Tischmitte Kartentrios zu bilden. Dazu legen die Spieler abwechselnd Karten von der Hand in die Tischmitte. Ein Kartentrio besteht aus drei Karten derselben Spielfarbe {Kreuz, Pik, Herz, Karo} oder desselben Wertes {2, 3, 4, 5, 6, 7, 8, 9, 10, Bube, Dame, König, Ass}. Der Spieler, der die dritte Karte in die Tischmitte legt erhält das Trio und legt es (offen) auf seinen Ablagestapel. Ein Trio aus gleicher Spielfarbe bringt dem Spieler 5 Punkte, ein Trio aus gleichem Kartenwert bringt 20 Punkte. Der andere Spieler ist danach am Zug.

Spielablauf

Beginnend mit einem zufälligen Startspieler sind die Spieler abwechselnd an der Reihe. Pro Spielzug muss jeder Spieler genau eine der folgenden drei Aktionen durchführen:

Aktion 1 - Karte Legen:

Aktion 2 - Karte Ziehen:

Aktion 3 - Karte Tauschen (Spezialaktion):

Hat der Spieler nach seinem Spielzug mehr als 8 Karten auf der Hand, so muss er eine von ihm gewählte Handkarte offen auf den Abwurfstapel in der Tischmitte abwerfen.

Spielende

Das Spiel endet sobald die letzte Karte vom Nachziehstapel gezogen wurde. Die Karte darf vom Spieler noch gelegt werden, falls dies möglich ist, und ein dadurch vervollständigtes Trio wird noch gewertet.

Anforderungen an das Programm

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: