随机数猜测游戏的Visual Basic 6.0

时间:2013-08-13 04:29:10

标签: vb6

我正在尝试创建一个会产生随机数的程序,你必须通过输入答案来猜测它。问题是它与正确的数字as shown不匹配。

物件: 2个标签,1个文本框,1个命令按钮

我的第一个代码:

Private Sub Command1_Click()
Dim Num, Random As Integer

Label2.Caption = ""
Num = Val(Text1.Text)
Randomize (Random)
Random = Val(Label1.Caption)
Label1.Caption = Int(10 * Rnd + 1)

For Num = 1 To Num
    If Num = Random Then
    Label2.Caption = "you won "
    Else
    End If
Next
End Sub

3 个答案:

答案 0 :(得分:2)

你不需要那个for循环,它会检查每个数字,直到你猜到的数字。

Private Sub Command1_Click()

    Dim Num, Random As Integer

    Label2.Caption = ""
    Num = Val(Text1.Text)
    Randomize (Random)
    Random = Val(Label1.Caption)
    Label1.Caption = Int(10 * Rnd + 1)


        If Num = Random Then
        Label2.Caption = "you won "
        Else
        End If

    End Sub

调试它

        If Num = Random Then
        Label2.Caption = "you won "
        Else
        Label2.Caption = "The number " & Num & " Does not equal " & Random
        End If

答案 1 :(得分:0)

首先,当前代码将始终导致数字零是第一个“随机”生成的数字。其次,该公式将产生可预测的随机数序列。

这背后的问题是计算机并不聪明,也无法真正创建随机数,这就是为什么你需要用Randomize“播种”它们来“摇动”骰子并提出不同的数字。但是,如果你使用相同的数字随机化,它将产生完全相同的“随机”数字序列。

例如,如果您使用代码,它将始终生成以下数字序列:0,8,7,5 ...

这就是为什么你需要用随机数“种子”随机数!大声笑。但是你怎么得到一个随机数?从技术上讲,你不能,但你可以作弊。您可以执行Randomize (Timer)Randomize,它将Timer作为参数,它所做的是“种子”随机数生成,自午夜起经过了几秒和几毫秒。因此,如果您单击按钮以每天在完全相同的秒和毫秒内猜测随机数,那么您将获得相同序列的随机数的唯一时间。

你可以通过添加日,月或年来尝试扩展这个理论 - 这将以指数方式扩展“种子”,你永远不会看到重复的随机数序列,但是这样做非常困难,因为一旦你开始玩大种子数你会遇到奇怪的问题,例如如果你将一个非常大的数字改为1,它仍会产生相同的随机数序列(在我的测试场景中,随机抽取5969992到5969995范围内的任何数字)将导致相同的随机数序列:9,8,6,6,1)。这可能是Randomize函数本身的限制。就个人而言,我认为不值得尝试超越定时器播种。

以下是您调整的代码,以生成更“随机”的数字序列:

Dim Num, Random As Integer

Label2.Caption = ""
Num = Val(Text1.Text)
Randomize
Label1.Caption = Int(10 * Rnd + 1)
Random = Val(Label1.Caption)

If Num = Random Then
    Label2.Caption = "you won "
Else
    Label2.Caption = "The number " & Num & " Does not equal " & Random
End If

答案 2 :(得分:0)

dim num, Random as integer

label2.caption =""
num = val(text1.text)

randomize
label1.caption = int((10 +1-1)*rnd+1)
random = val(label1.caption)

if num = random then
label2.caption ="you won"
else
label2.caption = "Try again"
end if