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
