我做了一个简单的游戏,幸运7使用vb代码在visual basic上。分数计数器不能正常工作,例如,如果我赢了一次游戏(在3个插槽中获得7个),我得到10分,分数标签变为10.如果我继续按下旋转按钮并赢再次,分数标签仍然保留在数字10上,并且不会变为20。
以下是我写的旋转按钮的代码:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim rand = New Random
Dim slots = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Dim score = 0
For i = 0 To 2
slots(i) = rand.Next(10)
Next
Label1.Text = (slots(0).ToString)
Label2.Text = (slots(1).ToString)
Label3.Text = (slots(2).ToString)
If slots(0) = 7 Or slots(1) = 7 Or slots(2) = 7 Then
score = score + 10
Label4.Text = (score.ToString)
PictureBox1.Visible = True
Else
PictureBox1.Visible = False
End If
End Sub
我是否需要添加一个while循环或类似的东西,以便在我赢得游戏时让分数发生变化?
答案 0 :(得分:4)
您需要在类级别移动变量声明。
目前,您在单击按钮时创建它。因此,每次单击时,都会删除score
变量并再次创建。
移动
Dim score = 0
行如下:
'Assuming your Form is called Form1
Public Class Form1 Inherits Form
Dim score = 0
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
'Your current code
End Sub
End Class
你的问题已经解决了。
您应该阅读一些documentation about scopes。
关于你的小错误的摘录:
如果在过程中声明变量,但在任何If语句之外,则范围为End Sub或End Function。变量的生命周期是程序结束。