Опубликован: 09.12.2017 | Доступ: свободный | Студентов: 741 / 32 | Длительность: 02:06:00
Специальности: Программист
Лекция 5:

Игра "Быки и коровы"

< Лекция 1 || Лекция 5: 123456
Как компьютер задумывает число в данной игре

Ранее мы уже объясняли, как генерируются случайные равномерно распределенные числа в некотором заданном интервале. Разбирался также код, позволявший генерировать число в предыдущей игре. В данной игре ситуация схожа. По-другому формируется интервал, используемый для генерирования "задуманного числа". По-другому рассчитывается число вопросов, достаточных для получения звания "Магистр игры". Но в целом приводимый ниже код должен быть понятен без особых пояснений:

/// <summary>
        /// Компьютер задумывает число и определяет N
        /// число вопросов, достаточное для отгадывания
        /// и получения звания Магистр игры
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonThink_Click(object sender, EventArgs e)
        {
            //Анализ уровня игры
            //определяет интервал, 
            //в котором находится задуманное число
            level_game = int.Parse(textBoxLevelGame.Text);
            //ограничение уровня
            if (level_game > 5) level_game = 5;
             
            //число цифр в задуманном числе зависит от уровня
            digits = level_game + 2;
            min = (int)Math.Pow(10, digits - 1);
            max = min * 10 - 1;

            //задуманное случайное число             
              number = rnd.Next(min, max);
            
            //Число вопросов для звания магистр
            N = (level_game + 2) * 5;
            
            //Вывод ответа компьютера о задуманном числе
            //и числе вопросов для звания магистр
            textBoxMin.Text = min.ToString();
            textBoxMax.Text = max.ToString();
            string answer = ANSW + min + ", " + max + "]\r\n" +
                ANSW1 + N + ANSW2 + ANSW3 + ANSW31 + ANSW32 + ANSW33;
            textBoxAnswer.Text = answer;
        }
Как компьютер отвечает на вопрос "Задуманное равно N?"

Общая схема обработчика события Click соответствующей командной кнопки понятна, - читается число N, вызывается функция, подсчитывающая число быков и коров в числе N, формируется ответ, который и выводится в соответствующее окно. Вот код этого обработчика события:

private void buttonEqual_Click(object sender, EventArgs e)
        {
            countQuestion++;
            question = countQuestion.ToString() + ". ";
            question += "Число равно ";
            answer = int.Parse(textBoxE.Text);
            if (answer < min || answer > max)
            {
                textBoxResult.Text += "Введенное число вне интервала!";
                return;
            }
            question += answer + "?";
            question += OxAndCow();
            listBoxQA.Items.Add(question);
            if (ox_n == digits)
            {
                if (countQuestion <= N)
                    textBoxResult.Text = ANSW4 + ANSW44 + level_game +
                        "!\r\n" + ANSW5 + number;
                else
                    textBoxResult.Text = ANSW5 + number;
            }
        }
< Лекция 1 || Лекция 5: 123456