다음을 통해 공유


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

이 자습서의 4단계에서는 수학 문제의 답이 맞는지 여부를 확인하는 CheckTheAnswer() 메서드를 작성합니다.이 항목은 기본 코딩 개념에 대해 설명하는 자습서 시리즈의 일부입니다.자습서에 대한 개요는 자습서 2: 시간이 지정된 수학 퀴즈 만들기를 참조하십시오.

[!참고]

이 메서드는 값을 반환하기 때문에 Visual Basic 사용자는 일반적인 Sub 키워드 대신 Function 키워드를 사용합니다.논리는 간단합니다. sub는 값을 반환하지 않고 function은 값을 반환합니다.

답이 맞는지 여부를 확인하려면

  1. CheckTheAnswer() 메서드를 추가합니다.

    이 메서드를 호출하면 addend1과 addend2의 값을 더하고 그 결과를 sum 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;
    }
    

    다음으로 새 CheckTheAnswer() 메서드를 호출하도록 타이머의 Tick 이벤트 처리기에 대한 메서드에서 코드를 업데이트합니다.

  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. 프로그램을 저장하고 실행합니다. 퀴즈를 시작하고 더하기 문제의 올바른 답을 입력합니다.

    [!참고]

    이때 답 입력을 시작하기 전에 기본값인 0을 선택하거나 수동으로 삭제해야 합니다.이 동작은 이 자습서의 뒷부분에서 수정합니다.

    올바른 답을 입력하면 메시지 상자가 열리고 시작 단추를 사용할 수 있게 되며 타이머가 중지됩니다.

계속하거나 검토하려면