Exemple #1
0
        private static void PlayGame(string[] words)
        {
            Random r = new Random();

            word = words[r.Next(words.Length)].ToUpper();
            WordGuesser    guesser = new WordGuesser(word);
            HashSet <char> guessed = new HashSet <char>();

            //11 rows for user info output
            gibbet = new GibbetDrawing(0, Constants.GibbetHeight + 11);

            while (guesser.ToString() != word && mistakes <= Constants.AllowedMistakes)
            {
                DrawGame(guesser, guessed, word, gibbet);

                Console.SetCursorPosition(gibbet.Location[0], gibbet.Location[1] + 2);
                Console.WriteWithGradient("Your guess: (or \"Escape\" to end) ", Color.Yellow, Color.Fuchsia, 25);
                Console.WriteLine();
                ConsoleKeyInfo letterChoice = Console.ReadKey();

                if (letterChoice.Key == ConsoleKey.Escape)
                {
                    Menu.Initialize();
                    break;
                }
                char letter = letterChoice.KeyChar.ToString().ToUpper().First();

                if (!word.Contains(letter) && !guessed.Contains(letter))
                {
                    guessed.Add(letter);
                    mistakes++;
                    gibbet.Update();
                    DrawGame(guesser, guessed, word, gibbet);
                    if (mistakes >= Constants.AllowedMistakes)
                    {
                        isWon        = false;
                        currentScore = ScoreBoard.GetScore();
                        finalScore  += currentScore;
                        DisplayResult();
                        break;
                    }
                }

                guesser.Update(letter);
                DrawGame(guesser, guessed, word, gibbet);
            }
            currentScore = ScoreBoard.GetScore();
            finalScore  += currentScore;
        }
Exemple #2
0
 /// <summary>
 /// Displays 11 rows of user info + gibbet drawing
 /// </summary>
 /// <param name="guesser"></param>
 /// <param name="guessed"></param>
 /// <param name="word"></param>
 /// <param name="gibbet"></param>
 private static void DrawGame(WordGuesser guesser, HashSet <char> guessed, string word, GibbetDrawing gibbet)
 {
     Console.Clear();
     Console.WriteLine("----------------------------------", Color.Aquamarine);
     Console.WriteLine($"Player:{player.Name}  --  Best score:{player.Score:F0}", Color.Khaki);
     Console.WriteLine("----------------------------------", Color.Aquamarine);
     Console.WriteLine($"Current level:{gameLevel}    {Message.ChooseLetter}", Color.Khaki);
     if (!Constants.DEBUG_MODE)
     {
         Console.WriteLine($"---------DEBUG: {word}--------", Color.Aquamarine);
     }
     else
     {
         Console.WriteLine("----------------------------------", Color.Aquamarine);
     }
     Console.WriteLine();
     Console.WriteLine(guesser.ToString(), Color.CornflowerBlue);
     Console.WriteLine();
     Console.WriteLine(Message.AlreadyGuessed, Color.Yellow);
     Console.WriteLine();
     Console.WriteLine(String.Join(" ", guessed), Color.Red);
     Console.WriteLine();
     gibbet.Print();
 }