Шаг 4. Добавление метода CheckTheAnswer()
Игра должна проверять, дает ли пользователь правильный ответ.К счастью, написание методов, которые выполняют простые вычисления, например, метода CheckTheAnswer(), не является сложной задачей.
Примечание
Для тех, кто разрабатывает игру на Visual Basic необходимо отметить, что поскольку метод возвращает значение, вместо обычного ключевого слова Sub будет использоваться ключевое слово Function.Это объясняется просто — процедуры не возвращают значения, в отличие от функций.
Добавление метода CheckTheAnswer()
Добавьте метод CheckTheAnswer(), который выполняет сложение переменной addend1 и переменной addend2 и выполняет проверку, что сумма равна значению sum элемента управления NumericUpDown.Если значение суммы равно значению sum метод возвращает значение true; в противном случае — false.Код должен выглядеть так, как показано ниже.
''' <summary> ''' Check the answer to see if the user got everything right. ''' </summary> ''' <returns>True if the answer's correct, false otherwise.</returns> ''' <remarks></remarks> Public Function CheckTheAnswer() As Boolean If addend1 + addend2 = sum.Value Then Return True Else Return False End If End Function
/// <summary> /// Check the answer to see if the user got everything right. /// </summary> /// <returns>True if the answer's correct, false otherwise.</returns> private bool CheckTheAnswer() { if (addend1 + addend2 == sum.Value) return true; else return false; }
Программа должна вызвать этот метод для проверки, правильный ли ответ дал пользователь.Это выполняется путем добавления оператора if else.Оператор выглядит следующим образом.
If CheckTheAnswer() Then ' statements that will get executed ' if the answer is correct ElseIf timeLeft > 0 Then ' statements that will get executed ' if there's still time left on the timer Else ' statements that will get executed if the timer ran out End If
if (CheckTheAnswer()) { // statements that will get executed // if the answer is correct } else if (timeLeft > 0) { // statements that will get executed // if there's still time left on the timer } else { // statements that will get executed if the timer ran out }
Затем выполняется изменение обработчика событий Tick для проверки ответа.Новый обработчик с проверкой ответа должен содержать следующее.
Private Sub Timer1_Tick() Handles Timer1.Tick If CheckTheAnswer() Then ' If the user got the answer right, stop the timer ' and show a MessageBox. Timer1.Stop() MessageBox.Show("You got all of the answers right!", "Congratulations!") startButton.Enabled = True ElseIf timeLeft > 0 Then ' Decrease the time left by one second and display ' the new time left by updating the Time Left label. timeLeft = timeLeft - 1 timeLabel.Text = timeLeft & " seconds" Else ' If the user ran out of time, stop the timer, show ' a MessageBox, and fill in the answers. Timer1.Stop() timeLabel.Text = "Time's up!" MessageBox.Show("You didn't finish in time.", "Sorry") sum.Value = addend1 + addend2 startButton.Enabled = True End If End Sub
private void timer1_Tick(object sender, EventArgs e) { if (CheckTheAnswer()) { // If the user got the answer right, stop the timer // and show a MessageBox. timer1.Stop(); MessageBox.Show("You got all the answers right!", "Congratulations"); startButton.Enabled = true; } else if (timeLeft > 0) { // Decrease the time left by one second and display // the new time left by updating the Time Left label. timeLeft--; timeLabel.Text = timeLeft + " seconds"; } else { // If the user ran out of time, stop the timer, show // a MessageBox, and fill in the answers. timer1.Stop(); timeLabel.Text = "Time's up!"; MessageBox.Show("You didn't finish in time.", "Sorry"); sum.Value = addend1 + addend2; startButton.Enabled = true; } }
Теперь если обработчик события таймера обнаруживает, что пользователь дал правильный ответ, обработчик событий останавливает таймер, показывает сообщение с поздравлением и делает снова доступной кнопку Пуск.
Сохраните и выполните программу.Начните игру, введите правильный ответ для задачи на сложение.
Примечание
При вводе ответа можно заметить некую странность в поведении элемента управления NumericUpDown.Если начать ввод ответа, не выделив при этом ответ полностью, нуль остается, его необходимо удалить вручную.Такое странное поведение будет исправлено в этом руководстве позднее.
При вводе правильного ответа должно открыться окно сообщений, кнопка Пуск должна стать доступной, таймер должен остановиться.Нажмите снова кнопку Пуск и убедитесь в этом.
Продолжить или повторить пройденный материал
Следующий шаг руководства см. в разделе Шаг 5. Добавление обработчиков событий входа для элементов управления NumericUpDown.
Предыдущий шаг руководства см. в разделе Шаг 3. Добавление таймера с обратным отсчетом.