0

我一直在为学校作业在 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 的业余爱好者。

任何答案将不胜感激。

4

2 回答 2

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

于 2012-09-20T12:57:33.323 回答
0

正如@AYK 所建议的那样,我在上面发布我的评论作为答案,这样我们就可以结束这个问题了......

它有点小技巧,但是您可以将速度变量移动到全局模块中,使其成为全局静态变量并查看是否有效吗?

于 2012-09-21T08:29:58.453 回答