我的课堂作业需要一些帮助。我正在尝试创建一个必须有循环的随机数猜测游戏。基本上,你输入一个数字作为猜测,程序会显示一条消息,告诉你猜测是否太高、太低或正确,并且它将循环直到你猜测正确。该程序还会计算您猜测的次数。
表格如下:
这是我到目前为止的代码:
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
Dim decNumber As Decimal
Dim rand As New Random
Dim decGuess As Decimal
Dim intCount As Integer = 0
decGuess = CDec(txtGuess.Text)
Do
decNumber = rand.Next(1, 100)
intCount += 1
lblCount.Text = intCount.ToString
If decNumber < decGuess Then
lblResponse.Text = "Too low, try again."
ElseIf decNumber > decGuess Then
lblResponse.Text = "Too high, try again."
ElseIf decNumber = decGuess Then
lblResponse.Text = "Correct."
End If
Loop Until decGuess = decNumber
End Sub
我不太确定代码中的错误是什么,但每当我点击“显示”时,猜测计数都是一个非常高的数字,并且标签中显示的消息始终只是“正确”。所以我的问题是如何做我修复了这个问题并正确编写了循环?
更新:
Public Class Form1
Dim intNumber As Integer
Dim rand As New Random
Dim intGuess As Integer
Dim intCount As Integer
Private Sub btnNew_Click_1(sender As Object, e As EventArgs)
lblResponse.Text = String.Empty
txtGuess.Clear()
lblCount.Text = String.Empty
intNumber = rand.Next(1, 100)
End Sub
Private Sub btnGuess_Click(sender As Object, e As EventArgs) Handles btnGuess.Click
intGuess = CInt(txtGuess.Text)
If intNumber < intGuess Then
lblResponse.Text = "Too high, try again."
ElseIf intNumber > intGuess Then
lblResponse.Text = "Too low, try again."
ElseIf intNumber = intGuess Then
lblResponse.Text = "Correct."
End If
intCount += 1
lblCount.Text = intCount.ToString
End Sub
您的代码有很多错误:
1。随机数的定义
您每次循环都会生成随机数,这意味着您尝试猜测的不是一个固定数字,而是该数字正在变化。
即使您在循环外定义随机数,每次单击按钮时该数字也会发生变化。
您需要将其定义为子例程之外的全局变量,并且仅在按下重置按钮时更改它
2。 intcount的定义
每次单击按钮时,intcount 都会设置为 0,因为它是在按钮单击子例程中定义的,我认为这是不需要的。
3。事实上您正在使用循环
你根本不需要循环。除非您希望程序进入无限循环并在每次按下按钮时崩溃并且您的猜测不正确,否则您应该删除循环并仅使用其中的代码。
4。使用了错误的数据类型
decnumber 应该是一个整数,因为 random.next() 返回一个整数值(您也可以将其重命名为 ToGuess)
decGuess = CDec(textGuess.Text)
应该是
decGuess = CInt(textGuess.Text)
因为如果你输入小数,你将永远无法猜出数字
更新:
您的新按钮不起作用的原因是它无法处理其点击。假设您已调用新按钮
btnNew
,请尝试替换:
Private Sub btnNew_Click_1(sender As Object, e As EventArgs)
与:
Private Sub btnNew_Click_1(sender As Object, e As EventArgs) Handles btnNew.Click
下次为按钮单击添加子例程时,请尝试在 Visual Studio 的设计视图中双击该按钮。这将自动生成点击子例程。
您遇到的另一个问题是,您在加载表单时尚未生成随机数。要解决此问题,请在设计器视图中双击表单以生成加载子例程,然后以编程方式按下按钮
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
btnNew.PerformClick()
End Sub
另外,感谢jimi的评论,记得在按btnNew
时将
intCount
设置为0
' 游戏循环 做 尝试 += 1 userGuess = CInt(InputBox("猜一个 1 到 100 之间的数字:"))
If userGuess < numberToGuess Then
MsgBox("Too low! Try again.")
ElseIf userGuess > numberToGuess Then
MsgBox("Too high! Try again.")
Else
MsgBox("Congratulations! You've guessed the number in " & attempts & " attempts.")
End If
当 userGuess <> numberToGuess 时循环