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

10 Lösungen Lösungen öffentlich
#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
1x
vote_ok
von alezyn (100 Punkte) - 04.11.2015 um 11:35 Uhr
Quellcode ausblenden C#-Code
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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben