Опубликован: 09.12.2017 | Доступ: свободный | Студентов: 746 / 33 | Длительность: 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;
}
}