Zum Hauptinhalt springen

Würfelspiel 10

Setze das abgebildete Klassendiagramm vollständig um. Orientiere Dich bei der Konsolenausgabe am abgebildeten Beispiel. Erstelle zum Testen eine ausführbare Klasse.

Klassendiagramm​

Allgemeine Hinweise​

  • Aus Gründen der Übersicht werden im Klassendiagramm keine Getter und Object-Methoden dargestellt
  • So nicht anders angegeben, sollen Konstruktoren, Setter, Getter sowie die Object-Methoden wie gewohnt implementiert werden

Hinweise zur Klasse SymbolDice​

  • Der Konstruktor soll den Würfel werfen
  • Die Methode void rollTheDice() soll mit einer gleichverteilten Wahrscheinlichkeit dem Symbol einen Wert (Schwert, Schild) zuweisen

Hinweis zur Klasse Player​

Der Konstruktor soll den Namen mit dem eingehenden Namen und die Punkte mit dem Wert 10 initialisieren.

Hinweise zur Klasse Game​

  • Der Konstruktor soll die Spieler mithilfe der eingehenden Namen initialisieren und die Würfelliste mithilfe der eingehenden Anzahl Würfel initialisieren
  • Die Methode void play() soll den Spielablauf abbilden
  • Die Methode void move(attacker: Player, defender: Player) soll einen Spielzug abbilden
  • Die Methode void rollTheDices() soll alle Würfel werfen
  • Die Methode int getNumberOfSymbols(symbol: Symbol) soll die Anzahl der Würfel zum eingehenden Symbol zurückgeben

Spielablauf​

  • Das Spiel soll aus mehreren Runden bestehen
  • In jeder Runde sollen beide Spieler abwechselnd jeweils einen Spielzug durchführen können
  • Das Spiel soll enden, sobald ein Spieler 0 Punkte hat

Ablauf eines Spielzugs​

  • Zu Beginn eines Spielzugs sollen beide Spieler abwechselnd alle Würfel werfen
  • Anschließend sollen für den angreifenden Spieler die Anzahl geworfener Schwerter und für der verteidigende Spieler die Anzahl geworfener Schilde ermittelt werden
  • Anschließend soll der Schaden gemäß der Formel Anzahl Schwerter - Anzahl Schilde berechnet werden
  • Anschließend sollen dem verteidigenden Spieler Punkte in Höhe des Schadens abgezogen werden, wobei der Wert 0 nicht unterschritten werden soll
  • Am Ende des Spielzugs soll ausgegeben werden, wie viel Schaden der verteidigenden Spieler erlitten hat, und wie viele Punkte der verteidigende Spieler noch besitzt

Beispielhafte Konsolenausgabe​

Runde 1
Hans würfelt 5 Schwerter
Peter würfelt 0 Schilde
Peter erleidet 5 Schaden und besitzt noch 5 Punkte

Peter würfelt 0 Schwerter
Hans würfelt 5 Schilde
Hans erleidet 0 Schaden und besitzt noch 10 Punkte
...
Runde 6
Hans würfelt 3 Schwerter
Peter würfelt 2 Schilde
Peter erleidet 1 Schaden und besitzt keine Punkte mehr