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

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.
#2
1x
vote_ok
von Mentalist999 (680 Punkte) - 27.09.2015 um 15:21 Uhr
Problemlos durch weitere Handzeichen erweiterbarer Alghorhythmus.

Gruß

Quellcode ausblenden C#-Code
    [Flags]
    enum SSP : byte
    {
        None = 0,
        Schere = 1 << 0,
        Stein = 1 << 1,
        Papier = 1 << 2,
        Echse = 1 << 3,
        Spock = 1 << 4
    }
    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<byte, string> Results = new Dictionary<byte,string>()
            {
                { (byte)(SSP.Schere | SSP.Papier),  "Schere schneidet Papier." },
                { (byte)(SSP.Papier | SSP.Stein),   "Papier bedeckt Stein." },
                { (byte)(SSP.Stein  | SSP.Echse),   "Stein zerquetscht Echse." },
                { (byte)(SSP.Echse  | SSP.Spock),   "Echse vergiftet Spock." },
                { (byte)(SSP.Spock  | SSP.Schere),  "Spock zertrümmert Schere." },
                { (byte)(SSP.Schere | SSP.Echse),   "Schere köpft Echse." },
                { (byte)(SSP.Echse  | SSP.Papier),  "Echse frisst Papier." },
                { (byte)(SSP.Papier | SSP.Spock),   "Papier widerlegt Spock." },
                { (byte)(SSP.Spock  | SSP.Stein),   "Spock verdampft Stein." },
                { (byte)(SSP.Stein  | SSP.Schere),  "Stein schleift Schere." },
                { (byte)(SSP.Stein  | SSP.Stein),   "Stein gegen Stein." },
                { (byte)(SSP.Schere | SSP.Schere),  "Schere gegen Schere." },
                { (byte)(SSP.Papier | SSP.Papier),  "Papier gegen Papier." },
                { (byte)(SSP.Echse  | SSP.Echse),   "Echse gegen Echse." },
                { (byte)(SSP.Spock  | SSP.Spock),   "Spock gegen Spock." }
            };

            char Input = default(char);

            for (byte User = 0, Npc = 0; Input != '0'; Input = Console.ReadKey().KeyChar, Console.Clear())
            {
                Console.WriteLine("Runde {0}\n" + 
                                  "Scores :" + 
                                  "\n\tUser -> {1}" + 
                                  "\n\tNPC -> {2}" + 
                                  "\n\nDu musst wählen ..." +
                                  "\n0 - Exit" +
                                  "\n1 - Schere" + 
                                  "\n2 - Stein" + 
                                  "\n3 - Papier" + 
                                  "\n4 - Echse" + 
                                  "\n5 - Spock", User + Npc, User, Npc);

                if (!"012345".Contains(Input)) continue;

                SSP UserChoice = (SSP)Enum.Parse(typeof(SSP), Convert.ToString(1 << (byte)Input - 49, 10)),
                    NpcChoice  = (SSP)Enum.Parse(typeof(SSP), Convert.ToString(1 << new Random().Next(0, 5), 10));

                string Result = Results[ (byte)(UserChoice | NpcChoice) ], 
                       Winner = Result.Split(' ')[0];

                if (Winner == UserChoice.ToString()) User++;
                if (Winner == NpcChoice.ToString()) Npc++;

                Console.WriteLine(Result + "\n{0}", (Winner == UserChoice.ToString()) 
                                                        ? (Winner == NpcChoice.ToString()) 
                                                            ? "Unentschieden!" 
                                                            : "Du hast gewonnen!" 
                                                        : "Du hast verloren!");
            }
        }
    }

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

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