Compare commits

..

No commits in common. "da952c179b79f854d66b69f8d20b19939f58fa74" and "3b804662e25862cbcc706e85a94455e24d483510" have entirely different histories.

3 changed files with 0 additions and 42 deletions

1
.gitignore vendored
View File

@ -14,7 +14,6 @@
# Generated files
.idea/**/contentModel.xml
.idea
# Sensitive or high-churn files
.idea/**/dataSources/

View File

@ -1,2 +0,0 @@
public class Main {
}

View File

@ -1,41 +1,2 @@
# 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.
Folgende Funktionalität ist dafür gefordert:
Da gerade der Star-Wars-Tag (May, the Fourth...) vor der Türe steht, soll unser Kniffel eine Special-Edition werden und mit 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, in der nur die Punkte von Vieren und Fünfen in beliebiger Kombination zählen.
Ferner soll es in dieser Spielvariante mit bis zu 8 Augen noch die Kategorie "R2D2" geben, 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.
Bitte achten Sie auf folgende nicht-funktionale Anforderungen bzw. Entwurfsvorgaben:
Die Verwendung einer Layered Architecture inkl. eines sauber objektorientierten Domain-Layers, wie in der Vorlesung vorgestellt, ist obligatorisch.
Entscheiden Sie selbst, ob Sie das Spiel lieber mit einer TUI oder einer GUI implementieren möchten.
Erstellen Sie eine 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. Sie dürfen/sollen 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.
Achten Sie darauf, dass Fehler beim Laden oder Speichern der Highscore-Liste nicht zum Abbruch des Programms führen und fangen Sie evtl. auftretende Exceptions (s. VL für den 02.05.).
Für die Bewertung der Punktzahlen für die jeweilige Kategorie bietet sich eine Vererbung an.
Folgende 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.
Es sind 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.ä.