Inhalt

Spiel: Ich habe noch nie...

Das Spiel

Unser Spiel heißt Ich habe noch nie, gerne abgekürzt als IHNN, basiert auf dem Trinkspiel gleichen Namens. Es ist im Rahmen des Kurses Software Engineering an der HAW Hamburg entstanden, im Wintersemester 2022/23. Dort ging es um die Prozesse und Methoden der Softwareentwicklung, nicht um eine konkrete Sprache. Als Prüfungsleistung sollte ein Projekt entwickelt werden, dokumentiert und präsentiert werden.

Es läuft im Webbrowser, sowohl am PC als auch Mobil. Zunächst werden die Mitspieler angelegt, dann werden im laufenden Spiel Fragen angezeigt. Auf diese Fragen kann hinter jedem Spieler einmal gevotet werden, hat dieser Spieler das Gefragte bereits getan - oder noch nicht? Am Ende des Spiels gibt es eine Übersicht, wie oft jeder mit Ja und Nein gestimmt hat.

Die technische Umsetzung

Als Gruppe haben wir hier unter Beweis gestellt, wie sehr wir uns mit verschiedenen Technologien auskennen, gleichzeitig aber auch Interesse hatten, neues zu lernen. Wir haben das Frontend in NodeJS/TypeScript/React entwickelt, das Backend wich einer einfachen ExpressJS-basierten API und MongoDB als Datenbank. Alles sauber als Docker Images ausgeliefert und über eine docker-compose auf einem Server deployed.

Zusätzlich haben wir die Dokumentation in LaTeX geschrieben und ebenfalls automatisch bauen lassen. Gleiches mit der Präsentation, nur das diese nicht in LaTeX sondern in Markdown, mit Marp als Präsentationssoftware, geschrieben wurde.

Die ganze Anwendung basiert auf dem State-Pattern, so ist jeder Zustand (Phase des Spiels) an bestimmte Views gekoppelt, die entsprechend sichtbar oder unsichtbar sind. Das Spiel durchläuft so die Zustände bis zum Ende, wo es dem Nutzer freisteht, das Spiel zu beenden oder noch eine Runde zu spielen.

Das Ergebnis

Live Demo

Wie bei den bisherigen Projekten ist auch eine Live Demo dabei entstanden: ihnn.x5f.de

Tipp
Der Server speichert nichts. Alles läuft lokal, auf dem Client. Die API funktioniert und speichert auch eingereichte Fragen. Jedoch ist der Spielstand / Rundenstand weg, wenn man z.B. die Seite neulädt.

Source Code

Der Source Code ist auf GitHub zu finden: github.com/se-ws22-ihnn

Screenshots

/project-2023-ihnn/state0.png
Vorbereitung des Spiels, Eintragen eines Spielers, Farbe wählen und mit Hinzufügen bestätigen
/project-2023-ihnn/state1.png
Spiel läuft, Links steht eine Aussage, rechts stimmen die Mitspieler Ja / Nein ab
/project-2023-ihnn/state2.png
Ende des Spiels, Links steht wie oft die Mitspieler Ja / Nein gewählt haben, rechts eine allgemeine Verteilung der Stimmen