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 mit Hilfe der eingehenden Namen initialisieren und die Würfelliste mit Hilfe 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ürfen 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