Alkyonemis
Alkyonemis

Reputation: 79

Number Guessing Game in c#

I'm working on Visual Studio about binary search in c#. My project about the computer find the user's guess number. So, I use tihs code in the main;

        int min = 0;    // minimum number in the array
        int max = 100;    // maximum number in the array
        int middle = 50;  // middle number in the array
        int counter = 1;
        string name, input;
        int guess_number;

        Console.WriteLine("Hello, this is a game that finding the number of in your mind. If you want to play so let me know you! ");
        name = Console.ReadLine();
        Console.WriteLine("Awesome welcome to the game " + name + " guess a number between " + min + " and " + max + " Please! ");
        Console.WriteLine("Is your guess " + middle + " ?\nIf it's your guess then write (0) please!\nIf it's too high then write (1) please!\nIf it's too low then write (2) please!");
        input = Console.ReadLine();
        guess_number = Convert.ToInt32(input);
        Console.WriteLine(" You select " + guess_number + " so, ");

        do
        {
            counter += 1;

            if (guess_number == 2)
            {
                min = middle + 1;
            }
            else if (guess_number == 1)
            {
                max = middle - 1;
            }
            else if (guess_number != 1 || guess_number != 2 || guess_number != 0)
            {
                Console.WriteLine(" Please write 0, 1 or 2 " + name);
            }
            middle = (min + max) / 2;
            Console.WriteLine("Is your guess " + middle + " ?\nIf it's your guess then write (0) please!\nIf it's too high then write (1) please!\nIf it's too low then write (2) please!");

            Console.WriteLine(counter + " times I tried for finding your number ");
        } while (guess_number != 0);

        Console.ReadKey();

However, output always repeat after the user write anything, why the reason about that, is there anyway to get the number?

Upvotes: 1

Views: 3947

Answers (2)

D-Shih
D-Shih

Reputation: 46219

from your description, I think you need to let user input new value to guess_number variable in the loop end otherwise the loop will not end from the condition guess_number != 0.

do
{
    counter += 1;
    if (guess_number == 2)
    {
        min = middle + 1;
    }
    else if (guess_number == 1)
    {
        max = middle - 1;
    }
    else if (guess_number != 1 || guess_number != 2 || guess_number != 0)
    {
        Console.WriteLine(" Please write 0, 1 or 2 " + name);
    }
    middle = (min + max) / 2;
    Console.WriteLine("Is your guess " + middle + " ?\nIf it's your guess then write (0) please!\nIf it's too high then write (1) please!\nIf it's too low then write (2) please!");

    Console.WriteLine(counter + " times I tried for finding your number ");

    input = Console.ReadLine();  // let user key in new value.
    guess_number = Convert.ToInt32(input);

} while (guess_number != 0);

Upvotes: 3

n1989
n1989

Reputation: 95

the last readKey should be inside the while.

do
        {
            counter += 1;

            if (guess_number == 2)
            {
                min = middle + 1;
            }
            else if (guess_number == 1)
            {
                max = middle - 1;
            }
            else if (guess_number != 1 || guess_number != 2 || guess_number != 0)
            {
                Console.WriteLine(" Please write 0, 1 or 2 " + name);
            }
            middle = (min + max) / 2;
            Console.WriteLine("Is your guess " + middle + " ?\nIf it's your guess then write (0) please!\nIf it's too high then write (1) please!\nIf it's too low then write (2) please!");

            input = Console.ReadLine();
            guess_number = Convert.ToInt32(input);

            Console.WriteLine(counter + " times I tried for finding your number ");
        } while (guess_number != 0);

Upvotes: 2

Related Questions