【问题标题】:Random Generator in Loop循环中的随机生成器
【发布时间】:2011-04-19 18:50:27
【问题描述】:

我的作业有一些问题。案例项目是:

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

我已经尝试了所有我能想到的方法,包括使用文本框而不是输入框并使用语法 - 但似乎无法正确处理。建议将不胜感激。谢谢。

我的代码:

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

【问题讨论】:

  • 你是否面临这个问题stackoverflow.com/questions/1757654/…
  • 哪个部分不工作?
  • 一定要循环吗?您不能在表单加载或“新游戏”按钮单击事件中生成随机数吗?然后你可以有一个文本框和按钮。单击按钮时,将文本框值与您的随机数进行比较。
  • 不,它不一定是一个循环 - 但我还能如何让应用程序继续要求答案,直到给出正确的答案?
  • @zod - 不,但感谢您的帮助。

标签: vb.net loops random


【解决方案1】:

您的代码实际上几乎可以工作。不过有几点:

  • 唯一真正不起作用的是图片上下移动。为此,您需要做的就是增加/减少 .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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    相关资源
    最近更新 更多