Поделиться через


Шаг 4. Добавление метода CheckTheAnswer()

В четвертой части этого урока вам предстоит написать метод CheckTheAnswer(), который проверяет правильность ответов на арифметические задачи.Этот раздел входит в серию учебников, посвященных основам написания кода.Общие сведения об учебнике см. в разделе Учебное руководство 2. Создание ограниченной по времени математической головоломки.

ПримечаниеПримечание

Если вы разрабатываете головоломку на Visual Basic, вам необходимо будет использовать ключевое слово Function вместо обычного ключевого слова Sub, потому что этот метод возвращает значение.Это объясняется просто: процедуры не возвращают значения, в отличие от функций.

Проверка правильности ответов

  1. Добавьте метод 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().

  2. Добавьте следующий код в оператор 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.Обработчик событий останавливает таймер, выводит поздравительное сообщение, а затем снова делает кнопку Запуск доступной.В противном случае головоломка продолжается.

  3. Сохраните программу, запустите ее, запустите головоломку и введите правильный ответ на задачу сложения.

    ПримечаниеПримечание

    При вводе ответа необходимо либо выделить значение по умолчанию перед началом ввода ответа, либо удалить нуль вручную.Позднее в этом уроке мы исправим это поведение.

    При вводе правильного ответа появляется окно сообщения, кнопка Запуск становится доступной, и таймер останавливается.

Продолжить или повторить пройденный материал