C# :: Aufgabe #106 :: Lösung #8
10 Lösungen

#106
Stein, Papier, Schere, Echse, Spock
Anfänger - C#
von Energy
- 24.09.2015 um 15:22 Uhr
Programmiere das Spiel Stein, Papier, Schere, Echse, Spock, sodass man selbst eine Figur auswählen kann und der Computer eine zufällige Figur auswählt. Ermittele dann, wer diese Partie gewonnen hat.
#8

von alezyn (100 Punkte)
- 04.11.2015 um 11:35 Uhr

namespace SPSES { public enum Spielauswahl { None, Stein, Papier, Schere, Echse, Spock, } public class Spieler { /// <summary> /// Die Spielauswahl des Spielers. /// </summary> private Spielauswahl auswahl = new Spielauswahl(); public Spielauswahl Auswahl { get { if (auswahl != Spielauswahl.None) { return auswahl; } else { throw new ArgumentNullException("auswahl"); } } set { auswahl = value; } } /// <summary> /// Der Spieler wird aufgefordert eine Auswahl zu treffen. /// </summary> public void TreffeAuswahl() { string input; int countLoop = 0; bool loop = true; do { countLoop++; Console.WriteLine("\nBitte treffen Sie eine Spielauswahl."); Console.WriteLine("Eingabe: Stein; Papier; Schere; Echse; Spock"); input = Console.ReadLine(); // Kontrolliere Eingabe und lege Auswahl fest. if (Enum.TryParse(input, true, out this.auswahl)) { Console.WriteLine("\nEingabe erfolgreich."); loop = false; } else { if (countLoop == 100) { throw new ArgumentException("Eingabeversuch zu oft wiederholt."); } else { Console.WriteLine("\nEingabe fehlerhaft."); } } } while (loop); } } public class Computer { private Spielauswahl auswahl; public Spielauswahl Auswahl { get { if (auswahl != Spielauswahl.None) { return auswahl; } else { throw new ArgumentNullException("auswahl"); } } set { auswahl = value; } } /// <summary> /// Der Computer trifft eine Spielauswahl /// </summary> public void TreffeAuswahl() { Random randomGenerator = new Random(); int zufall; zufall = randomGenerator.Next(1, 6); this.auswahl = (Spielauswahl)zufall; } } public class Auswertung { public static bool? WerteAus(Spielauswahl auswahlSpieler, Spielauswahl auswahlComputer) { if (auswahlSpieler == auswahlComputer) { return null; } else if (auswahlSpieler == Spielauswahl.None || auswahlComputer == Spielauswahl.None) { throw new ArgumentNullException(); } else { int ergebnis = (int)auswahlSpieler + ((int)auswahlComputer * 6); switch (ergebnis) { case 8: case 11: case 15: case 16: case 19: case 23: case 25: case 27: case 32: case 34: return true; default: return false; } } } } class Program { /// <summary> /// Programmablauf-Steuerung /// </summary> static void Main(string[] args) { Spieler spieler = new Spieler(); Computer computer = new Computer(); bool spielen = true; bool? ergebnis = null; Console.WriteLine("Willkommen bei Stein, Papier, Schere, Echse, Spock!"); do { spieler.TreffeAuswahl(); computer.TreffeAuswahl(); ergebnis = Auswertung.WerteAus(spieler.Auswahl, computer.Auswahl); if (ergebnis == true) { Console.WriteLine("\nGlückwunsch! Sie haben gewonnen!"); Console.WriteLine("{0} schlägt {1}", spieler.Auswahl.ToString(), computer.Auswahl.ToString()); } else if (ergebnis == false) { Console.WriteLine("\nSchade, leider haben Sie nicht gewonnen."); Console.WriteLine("{0} schlägt {1}", computer.Auswahl.ToString(), spieler.Auswahl.ToString()); Console.WriteLine("Viel Glück beim nächsten mal!"); } else { Console.WriteLine("\nDas Ergebnis ist unentschieden!"); Console.WriteLine("Spieler: {0}, Computer: {1}", spieler.Auswahl.ToString(), computer.Auswahl.ToString()); } Console.WriteLine("\nLust auf eine weitere Runde? (j/n):"); string input = Console.ReadLine(); input.ToLower(); if (input == "n") { Console.WriteLine("\nSchade. Bis zum nächsten Mal!"); spielen = false; } else if (input != "j") { Console.WriteLine("\nEingabe fehlerhaft! Spiel wird beendet. Auf Wiedersehen!"); spielen = false; } } while (spielen); } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1