다음을 통해 공유


4단계: CheckTheAnswer() 메서드 추가

퀴즈에서는 사용자의 대답이 올바른지 여부를 확인해야 합니다.다행히 CheckTheAnswer() 메서드와 같이 단순한 계산을 수행하는 메서드를 작성하는 것은 어렵지 않습니다.

[!참고]

Visual Basic 사용자는 이 메서드가 일반적인 Sub 키워드 대신 값을 반환하기 때문에 Function 키워드를 대신 사용하게 됩니다.이는 Sub는 값을 반환하지 않지만 Function은 값을 반환한다는 것만 알면 되기 때문에 매우 간단합니다.

CheckTheAnswer() 메서드를 추가하려면

  1. addend1과 addend2를 더하고 이 합계가 NumericUpDown 합계 컨트롤의 값과 같은지 여부를 확인하는 CheckTheAnswer() 메서드를 추가합니다.합계가 같으면 이 메서드는 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
    }  
    
  2. 다음으로 대답을 확인하도록 타이머의 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 -= 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;
        }
    }
    

    이제 사용자의 대답이 올바른 것이 확인되면 이벤트 처리기가 타이머를 중지하고 축하 메시지를 표시한 다음 시작 단추를 다시 사용할 수 있게 만듭니다.

  3. 프로그램을 저장하고 실행합니다.게임을 시작하고 더하기 문제에 대한 올바른 대답을 입력합니다.

    [!참고]

    대답을 입력할 때 NumericUpDown 컨트롤에서 이상한 점을 발견할 수 있습니다.전체 대답을 선택하지 않은 채 입력을 시작하면 0이 남기 때문에 이를 수동으로 제거해야 합니다.이 문제는 이 자습서의 뒷부분에서 수정합니다.

  4. 올바른 대답을 입력하면 메시지 상자가 열리고, 시작 단추가 사용할 수 있게 되고, 타이머가 중지되어야 합니다.시작 단추를 다시 클릭하여 단추가 작동하는지 확인합니다.

계속하거나 검토하려면