Опубликован: 09.12.2017 | Доступ: свободный | Студентов: 741 / 32 | Длительность: 02:06:00
Темы: Программирование, Образование, Школа
Специальности: Программист
Лекция 5:
Игра "Быки и коровы"
Как компьютер задумывает число в данной игре
Ранее мы уже объясняли, как генерируются случайные равномерно распределенные числа в некотором заданном интервале. Разбирался также код, позволявший генерировать число в предыдущей игре. В данной игре ситуация схожа. По-другому формируется интервал, используемый для генерирования "задуманного числа". По-другому рассчитывается число вопросов, достаточных для получения звания "Магистр игры". Но в целом приводимый ниже код должен быть понятен без особых пояснений:
/// <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; } }