目标:
这是一个猜谜游戏。该程序将生成一个介于1和500之间的随机数。用户要猜测数字。
表单应该包括一个START按钮、一个用于保存所有有效猜测的列表框和一个显示答案的标签。
单击START按钮后,用户将输入一个数字以响应InputBox()。
如果用户的猜测无效(不是数字,不是整数,超出范围),则显示适当的消息。
如果猜测有效,但不是正确的数字(高或低),则显示相应的消息。
图像高分辨率对话框图像低分辨率对话框
每次用户猜测范围内的有效数字猜测时,请将该猜测添加到表单的列表框中。允许猜测显示在列表框的多列中。
如果用户成功猜到数字,则显示相应的消息。包括他们进行了多少次猜测。仅将有效的(范围内的、积分的)数字猜测计数为猜测。
允许用户在输入框中输入quit退出游戏。如果用户放弃,告诉他们正确的号码
重要提示:生成后立即在标签中显示随机数,以便我(和你)在测试时知道这个数字是什么。如果你真的想玩游戏,你显然可以把它拿出来。
Private Sub btnStart_Click(sender As Object, e As EventArgs) Handles btnStart.Click
'Declare Variables
Dim strGuess As String
Dim random As New Random
Dim answer As Integer
'Start with empty Boxes
lstGuesses.Items.Clear()
answer = random.Next(1, 500)
lblAnswer.Text = CStr(answer)
Do
Try
strGuess = InputBox("Enter a numeric integer between 1 and 500. , Enter 'quit' to Quit.", "Guessing Game")
lstGuesses.Items.Add(strGuess)
If strGuess = CStr("quit") Then
MessageBox.Show("The number was " & answer & ". Click Start Game to play again.")
Exit Do
End If
If CInt(strGuess) < CInt(1) Then
MessageBox.Show("Invalid Guess. Enter an Integer Number between 1 and 500!")
End If
If CInt(strGuess) > CInt(500) Then
MessageBox.Show("Invalid Guess. Enter an Integer Number between 1 and 500!")
End If
If CInt(strGuess) = CInt(answer) Then
MessageBox.Show("Got it! You guessed " & lstGuesses.Items.Add(strGuess) & " times!")
End If
If CInt(strGuess) > CInt(answer) And CInt(strGuess) <= CInt(500) Then
MessageBox.Show("Guess is High")
End If
If CInt(strGuess) < CInt(answer) And CInt(strGuess) >= CInt(1) Then
MessageBox.Show("Guess is Low")
End If
If lstGuesses.Items.Contains("quit") = True Then
MessageBox.Show("The number was " & answer & ". Click Start Game to play again.")
End If
Catch ex As InvalidCastException
'Make user guess
MessageBox.Show("Invlid Guess. Enter a numeric integer between 1 and 500!")
End Try
Loop While CInt(strGuess) <> answer
End Sub
我的问题:我一直在尝试一切,这是我迄今为止做得最好的一次。这份家庭作业将在4小时后完成,如有任何帮助,我们将不胜感激。我应该输入"退出"这个词来结束游戏。但当键入字母以外的内容时,也会发出错误信息。每次我键入一个字母并按enter键时,它都会发出我设置的警告,但随后它就会崩溃。它不应该坠毁。报告称,坠机原因是:循环While CInt(strGuess)<>答复问题是由于InvalidCastException,并表示从字符串转换为integer类型是无效的。我试着做了TRYPARSE,但还是遇到了同样的问题。有人能告诉我如何让我在框中键入"退出"一词,这样它就退出了游戏,但又不会崩溃。
也许这不是最好的方法,但我认为它会有所帮助。
您需要做的是在用户在输入框中输入内容后,在顶部生成一个新的if语句
If IsNumeric(strGuess) Or strGuess = CStr("quit") Then
Else
MessageBox.Show("Only Numbers")
GoTo Line1
End If
在这里,您可以选中"如果IsNumeric(strGuess)或strGuess=CStr("退出")Then"
如果是,则不执行任何操作
如果否,显示一个消息框并使用goto"goto Line1",那么在您的上面添加Line1:"
如果有人键入类似"a"的内容,他将转到第1行"所以开始做",用户需要在输入框中输入新内容。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Declare Variables
Dim strGuess As String
Dim random As New Random
Dim answer As Integer
'Start with empty Boxes
lstGuesses.Items.Clear()
answer = random.Next(1, 500)
lblAnswer.Text = CStr(answer)
Line1:
Do
Try
strGuess = InputBox("Enter a numeric integer between 1 and 500. , Enter 'quit' to Quit.", "Guessing Game")
lstGuesses.Items.Add(strGuess)
If IsNumeric(strGuess) Or strGuess = CStr("quit") Then
Else
MessageBox.Show("Only Numbers")
GoTo Line1
End If
If strGuess = CStr("quit") Then
MessageBox.Show("The number was " & answer & ". Click Start Game to play again.")
Exit Do
End If
If CInt(strGuess) < CInt(1) Then
MessageBox.Show("Invalid Guess. Enter an Integer Number between 1 and 500!")
End If
If CInt(strGuess) > CInt(500) Then
MessageBox.Show("Invalid Guess. Enter an Integer Number between 1 and 500!")
End If
If CInt(strGuess) = CInt(answer) Then
MessageBox.Show("Got it! You guessed " & lstGuesses.Items.Add(strGuess) & " times!")
End If
If CInt(strGuess) > CInt(answer) And CInt(strGuess) <= CInt(500) Then
MessageBox.Show("Guess is High")
End If
If CInt(strGuess) < CInt(answer) And CInt(strGuess) >= CInt(1) Then
MessageBox.Show("Guess is Low")
End If
If lstGuesses.Items.Contains("quit") = True Then
MessageBox.Show("The number was " & answer & ". Click Start Game to play again.")
End If
Catch ex As InvalidCastException
'Make user guess
MessageBox.Show("Invlid Guess. Enter a numeric integer between 1 and 500!")
End Try
Loop While CInt(strGuess) <> answer
End Sub