Проблема с угадыванием игры с числами в C#

#c#

#c#

Вопрос:

В настоящее время я работаю над игрой в угадывание случайных чисел в школе. Это всего лишь моя вторая неделя программирования, поэтому это задание было для меня, мягко говоря, сложным. Я думаю, что у меня все отключено, кроме того, что мой цикл должен быть где-то сломан (я не могу его найти!), Потому что он никогда не определяет правильный ответ — просто утверждает, что каждое предположение неверно. Что я сделал?? Я надеюсь, что вы сможете мне помочь 🙂 Очень признателен!

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Assn3_2
{
class Program
{
    public static int SelectedNumber = 0;
    public static Random ran = new Random();
    public static bool GameOver = false;
    public static int UserMaxValue = 0;



    static void Main(string[] args)
    {
        int UserNumber;
        SelectedNumber = ran.Next(0, UserMaxValue);

        do
        {
            Console.WriteLine("What is the maximum number you want to guess from?");
            UserMaxValue = Convert.ToInt32(Console.ReadLine());

            do
            {

                Console.WriteLine("Please make a guess between 1 and {0}", UserMaxValue);
                UserNumber = Convert.ToInt32(Console.ReadLine());
                GuessNumber(UserNumber);

            } while (GameOver == false);
        } while (GameOver == false);
    }

    public static void GuessNumber(int UserNumber)

    {
        int playagain = 0;

        if (UserNumber < SelectedNumber)
            Console.WriteLine("Wrong. Please try again.");
        else if (UserNumber > SelectedNumber)
            Console.WriteLine("Wrong.Please try again.");
        else
        {
            Console.WriteLine("Correct! The number is {0}. Again? (1 or 2)");
            playagain = Convert.ToInt32(Console.ReadLine());;

            while (playagain != 1 amp;amp; playagain !=2)
            {
                Console.WriteLine("Invalid answer. Again? Y or N");
                playagain = Convert.ToInt32(Console.ReadLine());
            }

            if (playagain.Equals(2))
                GameOver = true;

            else
                SelectedNumber = ran.Next(0, UserMaxValue);
        }


    }
}


}
  

Комментарии:

1. Хорошо, вы написали некоторый код. Теперь пришло время ее отладить. Устанавливайте точки останова, проверяйте переменные и наблюдайте за выполнением кода построчно.

2. Я думаю, это должно работать неправильно.

Ответ №1:

Это:

 SelectedNumber = ran.Next(0, UserMaxValue);
  

Вы запускаете это ДО того, как предложите пользователю ввести значение для UserMaxValue , поэтому эффективно вы делаете

  SelectNumber = ran.Next(0, 0);
  

Не очень случайно, когда есть только один выбор, и этот выбор является 0 … особенно, когда вы разрешаете только догадки между 1 и максимальным значением, которое будет предоставлено позже.

Комментарии:

1. Большое вам спасибо, Марк Би!! Я внес это изменение, и было создано случайное число, отличное от «0»! Теперь моя единственная другая проблема заключается в том, что вместо того, чтобы возвращаться к моему первому оператору «do» (установка максимального значения), моя программа просто просит пользователя угадать в том же диапазоне значений. У кого-нибудь есть какие-либо предложения или подсказки о том, как это изменить?

2. @VictoriaN Будут ли эти вопросы и ответы повторяться, пока вы не исправите все свои ошибки? Пожалуйста, по одному вопросу за раз….

3. И это не служба отладки. САМАЯ важная часть обучения программированию — это обучение отладке. Если вы даже не ПОПЫТАЕТЕСЬ разобраться в этом самостоятельно, вы ничему не научитесь.

4. Верно, верно! Еще раз спасибо за помощь 🙂 Я постараюсь снять остальное и поработать над этими навыками программирования!