如何根据'if'语句增加标签内的数字

时间:2016-11-08 18:55:49

标签: vb.net

如何根据'if'语句增加标签内的数字?这是我的代码:

Dim uservalue As Integer
uservalue = TextBox1.Text

If tbxOperator.Text = "+" Then
    If uservalue = number + number1 Then
        MessageBox.Show("Correct")
    Else
        MessageBox.Show("Incorrect")
    End If
End If

If tbxOperator.Text = "-" Then
    If uservalue = number - number1 Then
        MessageBox.Show("Correct")
    Else
        MessageBox.Show("Incorrect")
    End If
End If

Dim rn As Random
rn = New Random
number = rn.Next(1, 9)
number1 = rn.Next(1, 9)
tbxOne.Text = number.ToString
tbxTwo.Text = number1.ToString

number2 = rn.Next(1, 3)
If number2 = 1 Then
    tbxOperator.Text = "+"
Else
    tbxOperator.Text = "-"
End If

我基本上有一些功能正常的代码,可以使用'+'或' - '运算符生成一个简单的和,如果用户键入正确的答案,则会出现一个显示“正确”的框。我想做的是当用户得到正确的答案时,他们会在一个名为“积分”的标签中获得一个点。有人可以协助我这样做吗?

1 个答案:

答案 0 :(得分:0)

您可以调整代码(这称为“refactoring”),这样您就不必多次编写相同的内容,例如MessageBox.Show("Correct")行。

此外,您可以使用Select Case替换部分If...Then语句 - 目前只是略有改进,但如果您想添加,比如乘法和除法则会使其成为现实这样做要简单得多。

当用户得到正确的答案时,您需要添加一个(即递增)他们的分数并更新标签。因为我们已经重构了代码,所以这可以在一个地方完成而不是你必须对代码进行的两个地方:

Option Infer On ' allow the compiler to figure out data types in Dim statements.
Option Strict On ' make sure all variable types match up.

Public Class Form1

    Dim rn As New Random
    Dim userPoints As Integer
    Dim number1 As Integer
    Dim number2 As Integer
    Dim testOperator As String

    Private Sub bnTestMe_Click(sender As Object, e As EventArgs) Handles bnTestMe.Click
        ' select two random numbers for the test
        number1 = rn.Next(1, 9)
        number2 = rn.Next(1, 9)

        tbxOne.Text = number1.ToString()
        tbxTwo.Text = number2.ToString()

        ' select a random operator for the test
        Dim operatorChoice = rn.Next(1, 3)

        Select Case operatorChoice
            Case 1
                testOperator = "+"
            Case 2
                testOperator = "-"
        End Select

        tbxOperator.Text = testOperator

    End Sub

    Private Sub bnCheckIt_Click(sender As Object, e As EventArgs) Handles bnCheckIt.Click
        Dim uservalue As Integer = CInt(TextBox1.Text)
        Dim isCorrect As Boolean

        ' check if the user got it correct
        Select Case testOperator
            Case "+"
                isCorrect = (uservalue = number1 + number2)
            Case "-"
                isCorrect = (uservalue = number1 - number2)
        End Select

        ' perform appropriate actions depending on if the user was correct.
        If isCorrect Then
            userPoints += 1
            MessageBox.Show("Correct")
            lblPoints.Text = userPoints.ToString()
        Else
            MessageBox.Show("Incorrect")
        End If

    End Sub

End Class

我使用的变量名称与您显示的名称略有不同,因此它们更加一致。我使用名为“bnTestMe”的按钮向用户显示测试,并使用名为“bnCheckIt”的按钮来检查答案。

userPoints += 1userPoints = userPoints + 1的缩写。 (当+=未用于简单的局部变量时,有一些关于isCorrect = (uservalue = number1 + number2)的技术要点:Compound Assignment - 您可能还不需要了解它。)

我将测试的数字和运算符存储在变量中,这样用户就不会通过输入其他值来作弊。

(uservalue = number1 + number2)的工作方式如下:If (uservalue = number1 + number2) Then...给出Boolean(即真或假)结果,就像使用isCorrect时一样。该结果将分配给isCorrect变量。然后我们可以稍后使用 <?xml version="1.0" encoding="utf-8"?> <contactData version="1.0"> <phonebook> <contact sDisplayName="Test" sOfficeNumber="1111" sMobilNumber="2023929323" sOtherNumber="" Account_Id="8" Ring_Id="0" sGroupName="" photoCustom='..\i.imgur.com\ul8Hmru.jpg' photoSelect="0"/> </phonebook> <blacklist/> <groupinfo/> </contactData> 来查看用户是否正确。