- Objektorientierte Analyse und Modellierung einsetzen, indem Sie
- die die zu implementierenden Strukturen (d.h. die Architektur, den Aufbau) als UML-Klassendiagramm darstellen
- Vorhandene Klassen wiederverwenden (Vererbung einsetzen, z.B. Spezialwürfel einbauen)
- Testgetriebene Entwicklung betreiben, indem Sie
- das Verhalten der Klassen als Unit Tests beschreiben
- UnitTests für alle Klassen/Methoden/Eigenschaften entwickeln, bevor Sie diese implementieren
- Logik und Darstellung trennen, indem Sie
- Wiederverwendbare GUI-Elemente einsetzen (UserControls)
- keine Logik in der GUI zu implementieren, sondern alles in spezialisierte Klassen auslagern
- Versionskontrolle betreiben, indem Sie
- git und github einsetzen um Ihre Ergebnisse zu sichern
- nach jedem logischen Entwicklungsschritt einen commit durchführen
In diesem Repository soll ein Würfelspiel entwickelt werden.
- Falls Sie kein eigenes Spiel entworfen haben, soll das Spiel Kniffel nachgebaut werden.
- Die entwickelte Spiellogik soll in Konsolen-Programmen und in Windows-Forms-Programmen genutzt werden können. Das bedeutet, dass die Logik in eigenen Klassen, nicht innerhalb z.B. der Programm.cs oder Form1.cs liegt. In der Programm.cs bzw. Form1.cs soll die Spiellogik nur eingebunden werden.
- Alle Klassen sollen so aufgebaut sein, dass das Programm erweiterungsfähig ist, so dass ein ähnliches Spiel wie Balut leicht umgesetzt werden kann.
- Vorerst nur die wichtigsten Würfel umsetzen: W6, W8, W10, W12, W20. Keine Bildwürfel (:hearts:, :clubs:, :diamonds:, :spades:, :pineapple: o.ä.)
Diese fachlichen Beschreibungen sollen die Entwicklung steuern und sind daher nicht ungebdint vollständig. Machen Sie sich - wie im echten Leben - eigene Gedanken.
Kniffel ist ein Würfelspiel mit fünf Würfeln, einem Würfelbecher und einem speziellen Spielblock.
- Würfel haben eine unterschiedliche Anzahl an Seiten (w). Falls keine Anzahl angegeben wird, geht man von einem W6 aus, also ein Würfel mit 6 Seiten.
- Einen Würfel kann man würfeln, wodurch eine zufälliger Wert erzeugt wird. Das Ergebnis des letzten Wurfes muss abgefragt werden können, ohne es automatisch neu zu würfeln. Für viele Spiele kann man Würfel "sichern", wodurch sie beim nächsten Wurf nicht mit berücksichtigt werden (bspw. bei Kniffel).
- Der Spielblock besteht bei Kniffel aus einem oberen Block und einem unteren Block.
- Der obere Block besitzt Felder aus deren Wert sich eine Zwischensumme berechnet. Auf die Zwischensumme kann unter Umständen ein Bonus aufgeschlagen werden. Zwischensumme + Bonus ergibt die Summe des oberen Blocks.
- Der untere Block besitzt Felder aus deren Wert sich die Summe des unteren Blocks berechnet.
- Jedes Feld kann einen Wurf entgegennehmen.
- Ein Wurf ist eine Sammlung aus 5 Würfeln. Je nach Feld werden nur bestimmte Würfel gezählt (z.B. "nur einser zählen") oder Punkte nur vergeben, wenn bestimmte Vorrausetzungen erfüllt sind (z.B. Full-House: zwei gleiche Würfel + drei gleiche Würfel).
- Wenn ein ungültiger Wurf in ein Feld eingefügt wird, wird das Feld "gestrichen".