C# :: Aufgabe #106 :: Lösung #1
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.
#1

von DBqFetti (2480 Punkte)
- 25.09.2015 um 22:56 Uhr

using System; using System.Collections.Generic; using System.Linq; namespace spock { class Program { static void Main() { Hand PlayerHand, ComputerHand, Stein = new Hand("Stein", new string[] { "Echse", "Schere" }), Papier = new Hand("Papier", new string[] { "Stein", "Spock" }), Schere = new Hand("Schere", new string[] { "Echse", "Papier" }), Echse = new Hand("Echse", new string[] { "Spock", "Papier" }), Spock = new Hand("Spock", new string[] { "Stein", "Schere" }); Dictionary<ConsoleKey, Hand> Keys = new Dictionary<ConsoleKey, Hand>() { { ConsoleKey.D1, Stein }, { ConsoleKey.NumPad1, Stein }, { ConsoleKey.D2, Papier }, { ConsoleKey.NumPad2, Papier }, { ConsoleKey.D3, Schere }, { ConsoleKey.NumPad3, Schere }, { ConsoleKey.D4, Echse }, { ConsoleKey.NumPad4, Echse }, { ConsoleKey.D5, Spock }, { ConsoleKey.NumPad5, Spock } }; Hand[] Hands = Keys.Values.Distinct().ToArray(); Console.WriteLine("Wählen Sie Ihre Hand:"); for(int i = 0; i < Hands.Length; i++) Console.WriteLine("[{0}] {1}", i + 1, Hands[i].Name); ConsoleKey Input; do Input = Console.ReadKey(true).Key; while (!Keys.ContainsKey(Input)); PlayerHand = Keys[Input]; ComputerHand = Hands[new Random().Next(Hands.Length)]; bool playerWins = PlayerHand.CanBeat(ComputerHand), computerWins = ComputerHand.CanBeat(PlayerHand); Console.WriteLine(); if(playerWins ^ computerWins) { if(playerWins) Console.WriteLine("Der Spieler gewinnt.\n{0} schlägt {1}.", PlayerHand.Name, ComputerHand.Name); else Console.WriteLine("Der Computer gewinnt.\n{0} schlägt {1}.", ComputerHand.Name, PlayerHand.Name); }else Console.WriteLine("Es konnte kein Sieger ermittelt werden.\nSpieler: {0}\nComputer: {1}", PlayerHand.Name, ComputerHand.Name); Console.ReadKey(); } } class Hand { string name; string[] canBeat; public string Name { get { return name; } } public Hand(string name, string[] canBeat) { this.name = name; this.canBeat = canBeat; } public bool CanBeat(Hand EnemyHand) { return canBeat.Contains(EnemyHand.Name); } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1