Шаг 4. Добавление метода CheckTheAnswer()
В четвертой части этого урока вам предстоит написать метод CheckTheAnswer(), который проверяет правильность ответов на арифметические задачи.Этот раздел входит в серию учебников, посвященных основам написания кода.Общие сведения об учебнике см. в разделе Учебное руководство 2. Создание ограниченной по времени математической головоломки.
![]() |
---|
Если вы разрабатываете головоломку на Visual Basic, вам необходимо будет использовать ключевое слово Function вместо обычного ключевого слова Sub, потому что этот метод возвращает значение.Это объясняется просто: процедуры не возвращают значения, в отличие от функций. |
Проверка правильности ответов
Добавьте метод CheckTheAnswer().
При вызове этот метод складывает значения addend1 и addend2, а затем сравнивает результат со значением в элементе управления NumericUpDown с именем суммы.Если значения равны, метод возвращает значение 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; }
Далее предстоит проверить ответ путем изменения кода в этом методе, чтобы обработчик события Tick таймера вызвал новый метод CheckTheAnswer().
Добавьте следующий код в оператор if else.
Private Sub Timer1_Tick() Handles Timer1.Tick If CheckTheAnswer() Then ' If CheckTheAnswer() returns true, then 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 ' If CheckTheAnswer() return false, keep counting ' down. Decrease the time left by one second and ' display the new time left by updating the ' Time Left label. 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 CheckTheAnswer() returns true, then 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) { // If CheckTheAnswer() return false, keep counting // down. 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; } }
Если ответ правильный, CheckTheAnswer() возвращает значение true.Обработчик событий останавливает таймер, выводит поздравительное сообщение, а затем снова делает кнопку Запуск доступной.В противном случае головоломка продолжается.
Сохраните программу, запустите ее, запустите головоломку и введите правильный ответ на задачу сложения.
Примечание
При вводе ответа необходимо либо выделить значение по умолчанию перед началом ввода ответа, либо удалить нуль вручную.Позднее в этом уроке мы исправим это поведение.
При вводе правильного ответа появляется окно сообщения, кнопка Запуск становится доступной, и таймер останавливается.
Продолжить или повторить пройденный материал
Следующий шаг руководства см. в разделе Шаг 5. Добавление обработчиков событий входа для элементов управления NumericUpDown.
Предыдущий шаг руководства см. в разделе Шаг 3. Добавление таймера с обратным отсчетом.