84d14c4f0b
Adding the functionality of the dice. - rolling a dice if its not locked |
||
---|---|---|
src | ||
.gitignore | ||
README.md | ||
gameflow.txt |
README.md
Kniffel
Aufgabenstellung Heimarbeit für 07.05.
Um für eine wenig Entspannung zu sorgen, wollen wir in diesem Testat ein Kniffel-Spiel (auch bekannt als Yatzee) entwickeln. Dabei handelt es sich um eine Art Poker, das allerdings mit fünf Würfeln gespielt wird. Ziel ist es mit 3 Würfen pro Spielrunde in verschiedenen Kategorien möglichst viele Punkte zu erzielen.
Funktionalität
Da gerade der Star-Wars-Tag (May, the Fourth...) vor der Türe steht, soll unser Kniffel eine Special-Edition werden
- optional mit Würfeln bis zu 8 Augen gespielt werden können (vgl. unten). Achten Sie daher darauf, die Augenzahl (also 6 oder 8) an genau einer Stelle im Programm zu setzen.
- Es soll möglich sein, dass das Spiel von 1 bis 6 Personen gespielt wird.
- Diese sollen zu Beginn alle ihren Namen eingeben können.
- Am Ende eines Spiels sollen die erzielten Punktzahlen in einer textuellen Highscore-Liste (mit Name, Punktzahl und Datum) gespeichert werden, die beim Start des Programms wieder geladen wird.
- Die Highscore-Liste soll vom Hauptmenü aus erreichbar und auf Wunsch nach einer Sicherheitsabfrage löschbar sein. Unsere Special Edition soll eine spezielle Kategorie "Star Wars Day" bekommen:
- nur die Punkte von Vieren und Fünfen in beliebiger Kombination zählen.
- Kategorie "R2D2"
- in der die Kombination 1 8 2 4 2 mit 42 Punkten bewertet wird. (R = 18. Buchstabe im Alphabet, 2, D = 4. Buchstabe + nochmal 2)
- Diese Variante soll zusätzlich noch über die Kategorien Siebener und Achter verfügen.
- Ferner soll der Bonus dort erst ab 108 Punkten "ausgeschüttet" werden.
nicht-funktionale Anforderungen bzw. Entwurfsvorgaben:
- Layered Architecture inkl. eines sauber objektorientierten Domain-Layers, wie in der Vorlesung vorgestellt
- TUI oder einer GUI implementieren
- textuelle und nummerierte Beschreibung mindestens des Gameflows (alias User Goal Use Case "Kniffel spielen") und laden Sie diese als gameflow.txt in das Hauptverzeichnis Ihres Gitty hoch
- dort "Schleifenkonstrukte" (z.B. "weiter bei Schritt 4 bis alle Spieler diesen Schritt ausgeführt haben"), verwenden
- Achten Sie auf das "Ping-Pong-Spiel" zwischen User und System.
- Fehler beim Laden oder Speichern der Highscore-Liste nicht zum Abbruch des Programms führen
- fangen Sie evtl. auftretende Exceptions ab
- Bewertung der Punktzahlen für die jeweilige Kategorie bietet sich eine Vererbung an
administrative Rahmenbedingungen gelten:
- Die Abgabe erfolgt individuell und ausschließlich über das Gitty der Hochschule.
-
Deadline dafür ist das Ende der Übung am 07.05.24
- mindestens 12 Commits mit sinnvollen Code-Fortschritten im Gitty vorzuweisen
- Die Besprechung der Abgabe mit den Betreuern (Abnahme) soll möglichst in der Übung am 07.05.24 erfolgen, die Entscheidung über Nachtermine liegt im Ermessen der Betreuer und setzt das Erreichen eines sinnvollen Stands am 07.05. voraus.
- Bei der Abnahme ist ein klares Verständnis des vorgelegten Codes nachzuweisen, wir behalten uns vor, Sie Code-Teile live neu schreiben zu lassen, wenn wir daran Zweifel haben sollten.
- Eine Nicht-Teilnahme am 07.05. ist mit einem entsprechenden Nachweis zu entschuldigen.
- Sofern Sie Code-Teile > 2 Zeilen aus dem Internet oder von einer KI übernehmen, ist die Quelle anzugeben (in einer Datei quellen. txt im Hauptverzeichnis Ihres Gitty). Bei Nutzung einer KI geben Sie zusätzlich den verwendeten Prompt an. Sie sind dafür verantwortlich auch übernommene Code-Teile vollständig erklären zu können. Achten Sie ferner darauf, dass Ihre Abgabe eine eigenständige Leistung bleibt, das würde ich ab ca. 20 % übernommener Code-Teile zu bezweifeln beginnen.
- Tauschen Sie keinen Code untereinander aus!
- Nutzen Sie "Schmierzettel" für Diagramme, Skizzen u.ä., um ein besseres Verständnis für das System zu entwickeln, tauschen Sie sich hier auch gerne mit anderen Studierenden aus dem Kurs aus. Heben Sie diese Skizzen auf, um bei der Abnahme Ihre Überlegungen ggf. vorstellen zu können.
Optionale Ideen zum weiteren Ausbauen des Systems:
- Erstellen Sie JUnit-Tests für die Domänenklassen sowie geeignete UML-Diagramme.
- Bauen Sie eine GUI ein, wenn Sie das vorher noch nicht gemacht haben sollten.
- Versuchen Sie sich an einer graphischen Darstellung der Würfel in Ihrer GUI.
- Erstellen Sie einen Computergegner, der versucht, halbwegs sinnvolle Entscheidungen für seine Würfel zu treffen.
- Überlegen sie sich weitere Sonderkategorien wie bspw. für Leia (1 2 5 9 1) oder denken Sie sich etwas weiteres Lustiges aus, das gerne auch zufällig im Spiel auftauchen kann. So könnte der Todesstern gelegentlich eingetragene Punktzahlen "vernichten" o.ä.