手順 4: CheckTheAnswer() メソッドの追加Step 4: Add the CheckTheAnswer() Method

このチュートリアルの第 4 部では、計算問題に対する解答が正しいかどうかを判断するメソッド、CheckTheAnswer() を記述します。In the fourth part of this tutorial, you'll write a method, CheckTheAnswer(), that determines whether the answers to the math problems are correct. このトピックは、コーディングの基本概念に関するチュートリアル シリーズの一部です。This topic is part of a tutorial series about basic coding concepts. チュートリアルの概要については、「チュートリアル 2: 制限時間ありの計算クイズの作成」を参照してください。For an overview of the tutorial, see Tutorial 2: Create a Timed Math Quiz.

注意

Visual Basic を使用している場合、このメソッドは値を返すため、通常の Function キーワードではなく、Sub キーワードを使用することに注意してください。If you're following along in Visual Basic, you'll use the Function keyword instead of the usual Sub keyword because this method returns a value. これは単に、Sub は値を返さないため、値を返す Function を使用しているだけです。It's really that simple: a sub doesn't return a value, but a function does.

解答が正しいかどうかを確認するにはTo verify whether the answers are correct

  1. CheckTheAnswer() メソッドを追加します。Add the CheckTheAnswer() method.

    このメソッドが呼び出されると、addend1 と addend2 の値を加算し、その結果を sum NumericUpDown コントロールの値と比較します。When this method is called, it adds the values of addend1 and addend2 and compares the result to the value in the sum NumericUpDown control. 値が等しい場合、メソッドは true を返します。If the values are equal, the method returns a value of true. それ以外の場合、メソッドは false の値を返します。Otherwise, the method returns a value of false. コードは次のようになります。Your code should look like the following.

    ''' <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;
    }
    

    次に、新しい CheckTheAnswer() メソッドを呼び出すタイマーの Tick イベント ハンドラーのメソッドのコードを更新して解答を確認します。Next, you'll check the answer by updating the code in the method for the timer's Tick event handler to call the new CheckTheAnswer() method.

  2. 次のコードを if else ステートメントに追加します。Add the following code to the if else statement.

    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 を返します。If the answer is correct, CheckTheAnswer() returns true. イベント ハンドラーはタイマーを停止し、クリアしたことを示すメッセージを表示し、[Start] ボタンが再び使用できるようになります。The event handler stops the timer, shows a congratulatory message, and then makes the Start button available again. それ以外の場合は、クイズが続行されます。Otherwise, the quiz continues.

  3. プログラムを保存し、実行して、クイズを起動し、加算問題の正しい解答を提供します。Save your program, run it, start a quiz, and provide a correct answer to the addition problem.

    注意

    解答を入力する場合、解答を入力する前に既定値を選択するか、手動でゼロを削除する必要があります。When you enter your answer, you must either select the default value before you start to enter your answer, or you must delete the zero manually. この動作については、このチュートリアルで後ほど修正します。You'll correct this behavior later in this tutorial.

    正しい解答を入力すると、メッセージ ボックスが開き、[Start] が使用できるようになり、タイマーが停止します。When you provide a correct answer, a message box opens, the Start button becomes available, and the timer stops.

続行または確認するにはTo continue or review