循环中的随机生成器

时间:2011-04-19 18:50:28

标签: vb.net loops random

我在分配方面遇到了一些问题。案例项目是:

  

创建一个允许用户猜测计算机生成的随机数的应用程序。当用户猜错时,应用程序应该向上或向下移动图像,具体取决于猜测与随机数的比较。如果随机数大于用户的猜测,则应用程序应向上移动图像以指示用户需要猜出更高的数字。如果随机数小于用户的猜测,则应用程序应向下移动图像以指示用户需要猜测较低的数字。当用户猜出随机数时,游戏结束。但是,应用程序应该允许用户过早地停止游戏。当发生这种情况时,应用程序应该使用随机数。

我已经尝试过每一种我能想到的方式,包括使用文本框而不是输入框并使用语法 - 但似乎无法正确使用它。建议将不胜感激。感谢。

我的代码:

Public Class Form1

    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Me.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim Number As Integer
        Dim inputNumber As Integer
        Dim answer As Integer
        Dim isconverted As Boolean

        Dim computerchoice As New Random
        answer = computerchoice.Next(1, 20)

        inputNumber = InputBox("Please guess number", "Random Number Game")


        Do
            isconverted = Integer.TryParse(inputNumber, Number)
            If isconverted = True Then

                If answer = Number Then
                    MessageBox.Show("You Win")

                ElseIf answer > Number Then
                    PictureBox1.SetBounds(0, 90, 0, 0, BoundsSpecified.Y)

                ElseIf answer < Number Then
                    PictureBox1.SetBounds(0, 220, 0, 0, BoundsSpecified.Y)

                End If
            Else
                MessageBox.Show("Please enter a valid number between 1 - 20 only")
            End If

            inputNumber = InputBox("Please guess number", "Random Number Game")

        Loop While answer <> Number

        MessageBox.Show("Answer:" & answer.ToString)

    End Sub

End Class

1 个答案:

答案 0 :(得分:2)

您的代码实际上几乎可以使用。但有一些事情:

  • 唯一真正无效的是画面上下移动。您需要做的就是增加/减少.Top属性。
  • 因为您在循环开始时将输入转换为数字并且直到最后都没有进行评估,所以在得到正确答案后,您将在一段额外的时间内循环。
  • 转换后的数字比较是多余的,因为你知道如果他们退出循环就得到了数字。

如果您是Visual Studio的新手,并且不了解breakpoints和其他调试,那么值得研究一下。使用这些工具,您可以在程序中的给定点暂停代码,查看值变量保持,逐行逐步执行代码。

这是工作代码:

Do

    If isconverted = True And Number >= 1 And Number <= 20 Then
        If answer > Number Then
            PictureBox1.Top -= 10
        ElseIf answer < Number Then
            PictureBox1.Top += 10
        End If
    Else
        MessageBox.Show("Please enter a valid number between 1 - 20 only")
    End If

    inputNumber = InputBox("Please guess number", "Random Number Game")

    isconverted = Integer.TryParse(inputNumber, Number)

Loop While (answer <> Number)

MessageBox.Show("You Win!  The answer is " & answer.ToString)