随机数猜谜游戏VB

时间:2014-10-04 00:38:09

标签: vb.net

目标:

这是一款猜谜游戏。该程序将生成1到500之间的随机数。用户将猜测该数字。

表单应包含START按钮,用于保存所有有效猜测的列表框以及显示答案的标签。

单击START按钮后,用户将输入一个数字以响应InputBox()。

如果用户的猜测无效(不是数字,不是整数,超出范围),请显示相应的消息。

如果猜测有效但不是正确的数字(高或低),则显示相应的消息。

图像高quess对话框boximage低quess对话框

每次用户猜测范围内的有效数字猜测时,请将猜测添加到表单上的列表框中。允许猜测显示在列表框的多个列中。

如果用户成功猜出了该号码,则显示相应的消息。包括他们采取了多少猜测。只计算有效(范围内,整数)数字猜测作为猜测。

通过输入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小时内完成,因此任何帮助将不胜感激。 我想输入“退出”这个词来结束游戏。但是当输入除字母之外的其他内容时,也会给出错误消息。每当我输入一个字母并按回车键时,它会给出我设置的警告,但随后它会崩溃。它不应该崩溃。它说崩溃来自: 循环而CInt(strGuess)&lt;&gt;回答 并且问题是因为InvalidCastException并且说从字符串转换为整数类型无效。我尝试过TRYPARSE,但仍然是同样的问题。任何人都可以告诉我如何让我在框中输入“退出”这个词,以便它退出游戏,但不会让它崩溃。

1 个答案:

答案 0 :(得分:1)

也许这不是最好的方式,但我认为这会有所帮助。

您需要做的是在用户在输入框中输入内容之后在顶部创建一个新的if语句。

            If IsNumeric(strGuess) Or strGuess = CStr("quit") Then
            Else
                MessageBox.Show("Only Numbers")
                GoTo Line1
            End If

在这里你检查&#34;如果IsNumeric(strGuess)或strGuess = CStr(&#34;退出&#34;)那么&#34;
如果是的话什么都不做 如果No显示msgbox并使用goto&#34; GoTo Line1&#34; &#34;所以在你的上面添加Line1:&#34;

如果有人输入类似&#34; a&#34;他会去第1行&#34;所以开始做&#34;并且用户需要在输入框中输入新内容。

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