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