Exemple #1
0
        public void Start()
        {
            Console.Clear();
            Console.SetCursorPosition(0, 0);
            Console.WriteLine("Think of a number between {0}-{1}. I will guess it in no more than {2} guesses.",
                              Color.White, MIN_VALUE, MAX_VALUE, N_GUESSES);

            Console.ReadKey();
            Console.WriteLine();

            Console.WriteLine("Press Up arrow if my guess is too high.", Color.White);
            Console.WriteLine("Down arrow for too low.", Color.White);
            Console.WriteLine("Enter for just right.", Color.White);

            Console.WriteLine();

            ulong currentComputerGuess = MAX_VALUE / 2;

            Guess.GuessType userAnswer = Guess.GuessType.Low;

            Console.SetCursorPosition(1, Console.CursorTop);

            while (!IsGameOver(userAnswer))
            {
                Console.WriteLine("Guess Number {0}: {1}", Color.White, ComputerGuesses.Count + 1, currentComputerGuess);

                userAnswer = GetUserAnswer();

                ComputerGuesses.Add(new Guess(currentComputerGuess, userAnswer));

                currentComputerGuess = GetNextComputerGuess(userAnswer);
            }

            Console.WriteLine();

            if (userAnswer == Guess.GuessType.Correct)
            {
                Console.WriteLine("I have guessed correctly!", Color.White);
            }
            else if (GuessRangeMin == GuessRangeMax)
            {
                Console.WriteLine("You LIE!... It is {0}", Color.White, GetLastGuess());
            }
            else
            {
                Console.WriteLine("I have failed.", Color.White);
            }

            Console.ReadKey();
        }
Exemple #2
0
        private Guess.GuessType GetUserAnswer()
        {
            ConsoleKey inputKey = GetUserInput();

            Guess.GuessType returnGuessType = Guess.GuessType.Correct;

            if (inputKey == ConsoleKey.UpArrow)
            {
                returnGuessType = Guess.GuessType.High;
            }
            else if (inputKey == ConsoleKey.DownArrow)
            {
                returnGuessType = Guess.GuessType.Low;
            }

            return(returnGuessType);
        }
Exemple #3
0
        // Determines the next computer guess based on the userInput
        private ulong GetNextComputerGuess(Guess.GuessType guessType)
        {
            ulong guess = 0;

            if (guessType == Guess.GuessType.High)
            {
                GuessRangeMax = GetLastGuess();
            }
            else
            {
                GuessRangeMin = GetLastGuess();
            }

            if (guessType == Guess.GuessType.Low && GetLastGuess() == MAX_VALUE - 1)
            {
                guess = MAX_VALUE;
            }
            else
            {
                guess = GetGuessRangeMidPoint();
            }

            return(guess);
        }
Exemple #4
0
 private bool IsGameOver(Guess.GuessType userAnswer)
 {
     return(userAnswer == Guess.GuessType.Correct || ComputerGuesses.Count >= N_GUESSES ||
            GuessRangeMin == GuessRangeMax);
 }