如何计算在Visual Basic中获得正确数字所需的猜测次数?

时间:2018-11-08 21:06:52

标签: vb.net

我一直在努力处理这段代码。我正在尝试做到这一点,以便在用户正确输入号码后,该程序会计算使他们正确输入数字所需的尝试次数。我该怎么办?

Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
    'SELECTS THE SECTET NUMBER
    Randomize() 'WITHOUT rANDOMIZE, THE SAME SEQUENCE OF NUMBERS APPEARS EACH RUN
    secretNumber = Int(Rnd(1) * 1000 + 1) 'picks a random nubmer between 1 and 1000

    'sets the initial prompts
    Me.lblLow.Text = 1
    Me.lblHigh.Text = 1000
    Me.txtGuess.Focus()
    Dim count As Integer

    btnEnterGuess.Enabled = True
    btnStart.Enabled = False

    Dim i As Integer

    For i = 1 To count
        count = count + 1

    Next i

    Do
        count = count + 1
    Loop Until count = secretNumber
    MessageBox.Show("It took you " & i - 1 & " tries to get the number correct.")
End Sub

2 个答案:

答案 0 :(得分:0)

我把这段代码扔到了一起,希望它将对您有所帮助。 编写此类代码时要注意的一点是,所有这些代码都在单个线程上运行(除非另行声明)。这意味着在运行for循环时,程序将变得无响应。

Public Class Form1
    Dim count As Integer = 0
    Dim answer As Integer = 0
    Dim GameRunning As Boolean = True
    Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message,
                                           ByVal keyData As System.Windows.Forms.Keys) _
                                           As Boolean
        'Gets all keystrokes on the fourm


        If GameRunning Then
            'converts keystroke to key ID and tests to see if the keystroke is the ENTER key
            If msg.WParam.ToInt32() = CInt(Keys.Enter) Then
                'try catch to prevent crash if text in entered
                Try
                    If txtAnswer.Text = answer Then
                        MessageBox.Show("Congratz! It took you " & count & " tries to guess the number!")
                    Else
                        txtAnswer.Text = ""
                        count = (count + 1)
                    End If
                Catch ex As Exception

                End Try
            End If
        End If
        'update label to show tries
        lblTries.Text = "Tries: " & count
        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function
    Private Sub SetupOnLoad() Handles MyBase.Load
        Reset()
    End Sub
    Public Sub Reset()
        count = 0
        Randomize()
        answer = Int(Rnd(1) * 1000 + 1)
        txtAnswer.Text = ""
        lblTries.Text = "Tries: " & count
        GameRunning = True
    End Sub
    'the Reset() code is ran on the program launch and when you press the button to prepare the game.
    Private Sub Reset_Game() Handles BtnReset.Click
        Reset()
    End Sub
End Class

此代码在文本框中获取用户输入。当用户按ENTER键时,程序将进行测试以查看其正确的数字。 希望这会有所帮助!

答案 1 :(得分:0)

我将尝试类似的操作,需要将随机化放置在点击之外

Public Class Form1
Dim count As Integer = 0
Dim answer As Integer = 0
Private Sub btnStart_ClicK(sender As Object, e As EventArgs) Handles btnStart.Click
    Randomize()
    answer = Int(Rnd(1) * 1000 + 1)

    btnStart.Enabled = False
    btnGuess.Enabled = True
End Sub


Private Sub btnGuess_Click(sender As Object, e As EventArgs) Handles btnGuess.Click
    count += 1
    If answer = TextBox1.Text Then
        MessageBox.Show("It took you " & count & " tries to get the number correct.")
        btnStart.Enabled = True
        btnGuess.Enabled = False
        count = 0
        answer = 0
    Else
        TextBox1.Text = ""
    End If
End Sub

结束班级