随机数猜谜游戏VB



目标:

这是一个猜谜游戏。该程序将生成一个介于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

最新更新