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
