C# :: Aufgabe #306 :: Lösung #1
2 Lösungen

#306
Galgenraten (hangman)
Anfänger - C#
von JKooP
- 18.04.2020 um 12:18 Uhr
Erstelle ein Konsolenspiel in der Form „Galgenraten“.
Spieler 1 gibt verdeckt ein zu erratenes Wort ein.
Regeln: Buchstaben a-z, keine Zahlen, ä = ae, ö = oe, ü = ue, ß = ss
Spieler 2 muss versuchen die richtigen Buchstaben zu erraten.
Dazu wird am Anfang des Spiels jeder Buchstabe des Lösungsworts als „Unterstrich“ dargestellt.
Errät Spieler 2 einen Buchstaben, wird der Unterstrich an allen Positionen an der sich der gefundene Buchstabe befindet durch den jeweiligen Buchstaben ersetzt.
Es sollen am Ende des Spiels die benötigte Zeit und die Anzahl der Versuche ausgegeben werden.
Die Anzahl der Versuche soll ähnlich wie beim Galgenraten begrenzt werden.
Varianten:
Der Spieler 2 kann auch das Lösungswort eingeben. Ist das Wort falsch, wird es als 2 Fehlversuche gewertet.
Als Hilfe könnten die bereits genutzten Buchstaben angezeigt werden.
Aus der Anzahl der benötigten Versuche und der Zeit könnten Gewinnpunkte generiert werden.
Viel Spaß
Spieler 1 gibt verdeckt ein zu erratenes Wort ein.
Regeln: Buchstaben a-z, keine Zahlen, ä = ae, ö = oe, ü = ue, ß = ss
Spieler 2 muss versuchen die richtigen Buchstaben zu erraten.
Dazu wird am Anfang des Spiels jeder Buchstabe des Lösungsworts als „Unterstrich“ dargestellt.
Errät Spieler 2 einen Buchstaben, wird der Unterstrich an allen Positionen an der sich der gefundene Buchstabe befindet durch den jeweiligen Buchstaben ersetzt.
Es sollen am Ende des Spiels die benötigte Zeit und die Anzahl der Versuche ausgegeben werden.
Die Anzahl der Versuche soll ähnlich wie beim Galgenraten begrenzt werden.
Varianten:
Der Spieler 2 kann auch das Lösungswort eingeben. Ist das Wort falsch, wird es als 2 Fehlversuche gewertet.
Als Hilfe könnten die bereits genutzten Buchstaben angezeigt werden.
Aus der Anzahl der benötigten Versuche und der Zeit könnten Gewinnpunkte generiert werden.
Viel Spaß
#1

von DavidDev024 (250 Punkte)
- 18.04.2020 um 18:28 Uhr

using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; namespace Galgenraten { class Program { static void Main(string[] args) { bool revealed = false; int wrongGuesses = 0; List<char> guesses = new List<char>(); Stopwatch timer = new Stopwatch(); //Input of the secret Word Console.WriteLine("Wilkommen zum Galgenraten. Spieler 1 muss sich ein geheimes Wort ausdenken, " + "\nwelches dann von Spieler 2 eraten werden muss. " + "\n Drehen sie nun den Bildschirm so, dass Spieler 2 nicht die Eingabe von Spieler 1 sehen kann."); string secretWord = ChooseWord(); WriteWord(secretWord, guesses, ref revealed); //Game Loop timer.Start(); while (!revealed && wrongGuesses <= 15) { if (!Guess(secretWord, guesses) == false) wrongGuesses++; WriteWord(secretWord, guesses, ref revealed); } timer.Stop(); //outcome of the game Console.Clear(); if (revealed) { Console.WriteLine("Geschafft!"); Console.WriteLine("Versuche: " + guesses.Count); Console.WriteLine("Zeit: " + timer.Elapsed); } else { Console.WriteLine("Nicht Geschafft."); Console.WriteLine("Versuche: " + guesses.Count); Console.WriteLine("Minuten: " + timer.Elapsed); } Console.ReadKey(); } private static string ChooseWord() { string word = ""; do { Console.Write("Spieler 1, geben Sie ihr Wort ein (a-z, keine Zahlen): "); word = Console.ReadLine(); } while (word.All(char.IsDigit)); return word.ToLower().Replace("ä", "ae").Replace("ö", "oe").Replace("ü", "ue").Replace("ß", "ss"); } private static bool Guess(string secretWord, List<char> guesses) { Console.SetCursorPosition(0, 3); Console.Write("Spieler 2, rate einen Buchstaben: "); char guess = Console.ReadLine().ToLower().ToCharArray()[0]; guesses.Add(guess); if (secretWord.Contains(guess)) { return true; } return false; } private static void WriteWord(string secretWord, List<char> guesses, ref bool revealed) { Console.Clear(); revealed = true; foreach (char c in secretWord) { if (guesses.Contains(c))//Reveale Console.Write(c); else { Console.Write('_'); revealed = false; } Console.Write(' '); } } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1