Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Gruppenaufgabe 3.2: Rock-paper-scissors-lizard-Spock
- 19 GP
- Sheldon hat mit seinen Freunden Rock-paper-scissors-lizard-Spock2 gespielt, wobei immer zwei
- Freunde gegeneinander gespielt haben. Die Ergebnisse jeder Runde wurden auf Papier als Buchsta-
- benkombinationen aufgeschrieben.
- Dabei sind den Symbolen folgende Buchstaben zugeordnet (nur Großbuchstaben!):
- S Schere (Scissors)
- R Stein (Rock)
- P Papier (Paper)
- W Spock
- L Echse (Lizard)
- Wenn zwei Spieler A und B sich jeweils für ihr Symbol entschieden haben, wird auf Papier zunächst
- das Symbol von A und daneben das Symbol von B geschrieben. In der nächsten Runde wird diese
- Buchstabensequenz einfach fortgesetzt.
- Gegeben sei folgender Spielverlauf:
- • Spieler A: Schere
- Spieler B: Stein
- • Spieler A: Spock
- Spieler B: Echse
- Es würde also folgende Sequenz auf dem Papier stehen: SRWL. Das entspricht 2 Runden und Spieler
- B hätte mit einem Score von 2 gewonnen, da der Stein die Schere zertrümmert und die Echse Spock
- vergiftet. Der Score errechnet sich aus der Differenz der gewonnenen und verlorenen Runden. Ein
- Unentschieden ist auch möglich.
- a) Laden Sie sich zunächst die Datei RockPaperScissorsLizardSpockTournament.java
- herunter.
- b) Implementieren Sie als erstes die Methode whoWins. Diese soll mit Hilfe verschachtelter
- switch-Anweisungen bestimmen, wer von zwei Spielern A und B eine Runde gewonnen
- hat. Haben beide Spieler die gleichen Symbole gewählt, wird 0 (Unentschieden) zurückge-
- geben. Hat das Symbol von Spieler A das von Spieler B geschlagen, wird 1 zurückgegeben,
- andernfalls −1. Schlagen Sie die Spielregeln bitte in der Wikipedia nach.
- c) Fügen Sie nun die Methode checkValidSymbol(char s) hinzu. Diese soll überprüfen,
- ob eine Eingabe ein gültiges Symbol darstellt. Die Eingabe wird dem Parameter s überge-
- ben. Nur die genannten Großbuchstaben sind gültige Eingaben. Bei einer gültigen Eingabe
- wird true, andernfalls false zurückgegeben. Es empfiehlt sich, ein switch-Konstrukt zu
- verwenden.
- d) Nun geht es an die Implementierung der eigentlichen Auswertung in der main-Methode. Um
- Fehlern vorzubeugen wurden in der main-Methode bereits Textbausteine in Kommentaren
- vorgegeben. Die Textbausteine selbst dürfen nicht mehr verändert werden und es dürfen auch
- keine neuen Bausteine hinzugefügt werden. Sie müssen nun dafür sorgen, dass die richtigen
- Ausgaben mit den richtigen Werten erfolgen. Implementieren Sie hierzu die while-Schleife,
- berechnen Sie die in den Ausgaben benötigten Variablen und fügen Sie Fallunterscheidungen
- ein, um die richtigen Ausgaben zu erzeugen.
- • Die Schleife soll die Eingabe in args[0] abarbeiten. Dabei sollen immer die jeweils
- nächsten zwei aufeinanderfolgende Symbole mit Hilfe der Methode whoWins ausge-
- wertet werden. Bei einem Unentschieden in einer Runde soll “Draw.”, ansonsten “A
- wins.” oder “B wins.” ausgegeben werden.
- • Wird beim Abarbeiten der Eingabe ein ungültiges Symbol entdeckt wird das Programm
- mit der entsprechenden Fehlermeldung beendet.
- • Bei einer leeren Eingabe wird das Programm mit der entsprechenden Fehlermeldung
- beendet.
- • Enthält die Eingabe eine ungerade Anzahl an Symbolen, wird das Programm mit der ent-
- sprechenden Fehlermeldung beendet. Dies geschieht allerdings erst nachdem alle mög-
- lichen Symbolpaare, außer dem letzten alleinstehenden Symbol, abgearbeitet worden
- sind.
- • Geben Sie abschließend aus, welcher der Spieler (“A” oder “B”) gewonnen hat, bzw. ob
- es zu einem Unentschieden kam. Geben Sie auch die Anzahl der gespielten Runden aus.
- Geben Sie die Datei RockPaperScissorsLizardSpockTournament.java als Lösung ab.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement