© StudioByTheSea/Shutterstock.com
Kartenspielen trotz Kontaktbeschränkung

Mau-Mau in Go


Dieses kleine Projekt ist kurz vor den Osterferien entstanden. Das Ziel war es, das Kartenspiel Mau-Mau als Onlinespiel umzusetzen, damit meine Tochter trotz der Kontaktbeschränkungen gegen ihren Opa Karten spielen kann. Außerdem wollte ich die Zeit zu Hause auch für ein nicht ganz so ernstes Projekt nutzen. Warum nicht einfach mal ein Spiel mit Go schreiben?

Wie Mau-Mau funktioniert, wird auf Wikipedia unter [1] beschrieben. Je nach Region hat das Spiel auch andere Namen, wie z. B. „Neunerln“, „Auflegen“ oder „Tschau Sepp“. Die Regeln sind im Grundsatz gleich, jedoch unterscheiden sich die Spielvarianten in kleinen Details. Aus diesem Grund werden wir den Spielern so viele Freiheiten wie möglich lassen. Das heißt, die Spieler sollten während des Spiels mindestens miteinander sprechen können, denn Kartenspielen hat ja auch etwas Kommunikatives. Das lässt sich in der aktuellen Situation per Telefon oder Skype ganz leicht umsetzen. Bei der Umsetzung war ich überrascht, wie viele Konzepte und Basics in dieser einfachen Umsetzung stecken. Diese möchte ich in diesem Artikel gerne vorstellen.

Folgende spannende Themen erwarten dich deshalb in den folgenden Absätzen:

  • Eine schnelle Umsetzung von Event Sourcing mit Go

  • Wie wir Closures geschickt als Event verwenden können

  • Wie Clients Nachrichten vom Server via WebSockets erhalten

  • Das JSON-Encoding von Daten

  • Embedding bzw. Einbinden von Strukturen

Das Spiel wird über einen Server verwaltet, und die Spieler sollen sich über einen normalen Webbrowser verbinden. Der Browser ist dabei die einfachste Art, den Client zu gestalten, denn Go bringt hierfür alles Notwendige mit und ein Browser ist auch auf jeder Plattform an Bord. Um unser Spiel möglichst einfach zu gestalten, implementieren wir es mit CSS und HTML nur für zwei Spieler. Die Datenstrukturen auf dem Server legen wir aber schon einmal flexibel an, sodass auch irgendwann mehr als zwei Spieler möglich sind.

Abbildung 1 zeigt, wie unser Spiel am Ende im Browser aussehen wird. Dabei ist der Bereich in drei große Segmente gegliedert:

  • oben: die Rückseiten der Karten des Gegners

  • mitte: der Kartenstapel zum Ziehen neuer Karten und der Stapel zum Ablegen

  • unten: die eigenen Karten und ein paar Steuerungsknöpfe

Die Umsetzung des Spiels soll Event-basiert sein. Das bedeutet, dass jede Aktion eines Spielers als Event gespeichert wird. Der jeweilige Spielstand ergibt sich durch die Summe aller Events. Bei Mau-Mau gibt es nur ein paar unterschiedliche Aktionen. Ein Spiele...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang