.net 在VB中更新变量

.net 在VB中更新变量,.net,vb.net,random,integer,lifetime,.net,Vb.net,Random,Integer,Lifetime,我想将当前游戏周期的猜测序号增加1。我最初将该值设置为0,但在1之后不会更新 尝试次数也是如此。我已将该值设置为21。但只要它更新到20,但不是之后 Option Strict On Option Explicit On Public Class Form1 Private ReadOnly rand As New Random Private value As Integer Private Sub Form1_Load(sender As System.Obj

我想将当前游戏周期的猜测序号增加1。我最初将该值设置为0,但在1之后不会更新 尝试次数也是如此。我已将该值设置为21。但只要它更新到20,但不是之后

   Option Strict On
Option Explicit On
Public Class Form1
    Private ReadOnly rand As New Random
    Private value As Integer

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        Me.value = rand.Next(minValue:=1, maxValue:=30)

    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim guess As Integer        'guess number
        Dim numTry As Integer       'No. of trys
        Dim RandNo As Integer       'Random Number
        Dim OrdNo As Integer        'Ordinal Number
        Dim Score As Integer        'Score

        Score = 0 'Initial value of score set as 0
        OrdNo = CInt(1)  'Initial value of ordinal set as 1 
        numTry = CInt(21)
        guess = CInt(TextBox1.Text)
        OrdNo = +1
        Label5.Text = CStr(OrdNo)

        'Show Message Box if the guess is not within the range
        If 1 > guess Then
            MessageBox.Show("Input within the range (1-30)", "Error", MessageBoxButtons.OK)
            Exit Sub
        End If

        'Show Message Box if the guess is not within the range
        If guess > 30 Then
            MessageBox.Show("Input within the range (1-30)", "Error", MessageBoxButtons.OK)
            Exit Sub
        End If

        'Display result and message when guess is larger than the lucky number
        If guess > Me.value Then
            Label11.Text = CStr(guess)
            Label10.Text = "The Lucky Number is smaller than your guess"
            OrdNo = OrdNo + 1
            Label5.Text = CStr(OrdNo)
            numTry = numTry - 1
            Label4.Text = CStr(numTry)
        End If

        'Display result and message when guess is smaller than lucky number
        If guess < Me.value Then
            Label11.Text = CStr(guess)
            Label10.Text = "The Lucky Number is larger than your guess"
            OrdNo = OrdNo + 1
            Label5.Text = CStr(OrdNo)
            numTry = numTry - 1
            Label4.Text = CStr(numTry)

        End If

        'Display result and message when guess is equal to the lucky number
        If guess = Me.value Then
            Label11.Text = CStr(guess)
            Label10.Text = "Congratulations ! This is the lucky number"
            Score = +10 'Increase the score by 10
            Label6.Text = CStr(Score)
            numTry = numTry - 1
            OrdNo = 1
            Me.value = rand.Next(minValue:=1, maxValue:=30)

            If numTry = 0 Then Application.Exit()

        End If

    End Sub

End Class
选项严格打开
选项显式打开
公开课表格1
私有只读rand作为新随机变量
作为整数的私有值
私有子表单1_Load(发送方作为System.Object,e作为System.EventArgs)处理MyBase.Load
Me.value=rand.Next(最小值:=1,最大值:=30)
端接头
私有子按钮1\u单击(发送者作为System.Object,e作为System.EventArgs)处理按钮1。单击
Dim guess作为整数的猜测数
Dim numTry作为整数“尝试次数”
Dim RandNo作为整数的随机数
Dim OrdNo作为整数的序数
将分数设置为整数的分数
分数=0'分数的初始值设置为0
OrdNo=CInt(1)'序数集的初始值为1
numTry=CInt(21)
guess=CInt(TextBox1.Text)
OrdNo=+1
Label5.Text=CStr(OrdNo)
'如果猜测不在范围内,则显示消息框
如果1>猜猜看
MessageBox.Show(“输入范围(1-30)”,“错误”,MessageBox按钮。确定)
出口接头
如果结束
'如果猜测不在范围内,则显示消息框
如果猜测>30,则
MessageBox.Show(“输入范围(1-30)”,“错误”,MessageBox按钮。确定)
出口接头
如果结束
'猜测大于幸运数字时显示结果和消息
如果guess>Me.value,那么
Label11.Text=CStr(猜测)
Label10.Text=“幸运数字小于您的猜测”
OrdNo=OrdNo+1
Label5.Text=CStr(OrdNo)
numTry=numTry-1
Label4.Text=CStr(numTry)
如果结束
'猜测小于幸运数字时显示结果和消息
如果猜
在按钮事件处理程序中,
RandNo
始终为零。考虑到表单加载事件处理程序中声明的具有相同名称
RandNo
的变量的生存期只保留给该方法

要避免这种情况,请执行以下步骤:

首先(但也可以选择)使用类,确保只初始化它一次(否则您可能会得到重复的数字,如MSDN文档中所述)

其次,声明只存储随机值一次的整数变量,在方法块范围外以相同方式分配其值并完成工作:

Public Class Form1

    Private ReadOnly rand As New Random
    Private value As Integer

    Private Sub Form1_Load() Handles MyBase.Load

        Me.value = rand.Next(minValue:=0, maxValue:=100)

    End Sub

    Private Sub Button1_Click() Handles Button1.Click
        ' Do what you want with Me.value
        '...
    End Sub

End Class

你有什么问题?你犯了什么错误。什么不起作用?我想他希望数字一直保持不变,直到他们猜对为止,但是从这段代码来看,我猜每次猜错时,它都会改变随机数。请学会调试..我不太明白。它仍然没有产生任何效果。你能再做一次吗?我想做一个这样的游戏。建议对代码进行编辑,谢谢,但是不,我不会下载这个项目来完成你的工作!,我们来这里是为了帮助你理解如何做到这一点,我已经解释了如何解决主要问题,如果你仍然有疑问,具体询问你有什么疑问,请注意,您可以更新您的问题,以添加您正在构建的代码中的进步,并解释与我显示的代码相关的任何问题。抱歉,我不是要求您完成我的工作。无论如何谢谢你!是的,不是零。我删除了那条评论