我一直在VB上为学校作业创建一个游戏,我在创建难度设置时遇到了麻烦。我的标题屏幕上有四个按钮,您可以在其中选择难度。当你点击其中一个按钮时,它应该添加到主游戏的“速度”变量上。我尝试了一些方法,但似乎仍无法正常工作。
这是我正在使用的代码。
主要游戏变量:
Public speed As Single = 5
Dim xVel As Single = Math.Cos(speed) * speed
Dim yVel As Single = Math.Sin(speed) * speed
标题屏幕代码(难度选择):
Private Sub btnPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlay.Click
gameMain.Show()
If btnEasy.Enabled = False Then
gameMain.speed = 5
End If
If btnMedium.Enabled = False Then
gameMain.speed = gameMain.speed + 2
End If
If btnHard.Enabled = False Then
gameMain.speed = gameMain.speed + 5
End If
If btnInsane.Enabled = False Then
gameMain.speed = gameMain.speed + 10
End If
End Sub
因此,当您单击按钮时,它将被禁用并更改颜色。当你开始游戏时,如果其中一个按钮被禁用,它应该将相应的数量添加到“速度”变量。
我也尝试在主游戏表单上添加类似的代码,但也没有用。 我试图保持代码尽可能简单,因为我仍然是VB的业余爱好者。
任何答案都将不胜感激。
答案 0 :(得分:4)
您的代码仅更改“速度”字段,不会重新计算xVel和yVel的值。
您可以通过将速度设为属性而不是字段来解决此问题。属性设置器可以调整速度矢量:
Private _speed As Single
Private xVel As Single
Private yVel As Single
Private angle As Single
Public Sub New()
InitializeComponent()
Speed = 5
End Sub
Public Property Speed() As Single
Get
Return _speed
End Get
Set(ByVal value As Single)
_speed = value
xVel = _speed * Math.Cos(angle)
yVel = _speed * Math.Sin(angle)
End Set
End Property
您需要继续使用angle
。
答案 1 :(得分:0)
根据@AYK的建议,我将上述评论作为答案发布,以便我们可以结束这个问题....
它有点像黑客,但你可以将速度变量移动到一个全局模块,使它成为一个全局静态变量,看看它是否有效?