2

我正在尝试模拟一个游戏,玩家可以通过单击“攻击”和“治疗”按钮来伤害敌人或治愈自己。我试图在一个进度条上进行测试运行,以确保在修改它以适应我的游戏之前一切正常,并制作了一个新的 WindowsApplication。

我在表单上有一个进度条以及一个攻击按钮和一个治疗按钮,如果我通过治疗超过进度条的最大值或通过伤害超过最小值,它会喷出错误。我无法弄清楚在这两种情况下修复它的代码行,我一直在到处寻找答案。

这是我的治疗按钮代码;

Private Sub btnHeal_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) _
                      Handles btnHeal.Click

    prgHealth.Value = prgHealth.Value + 10

    If prgHealth.Value >= prgHealth.Maximum Then
        prgHealth.Value = prgHealth.Maximum
    End If

End Sub

这是我的损坏按钮代码;

Private Sub btnDamage_Click(ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                        Handles btnDamage.Click

    prgHealth.Value = prgHealth.Value - 10

    If prgHealth.Value < prgHealth.Minimum Then
        prgHealth.Value = prgHealth.Minimum
    End If

End Sub

任何帮助将不胜感激。另请注意,我是编码初学者,肯定会对大量代码感到困惑。

我敢肯定,很多像这样弄乱进度条的人都会遇到同样的问题,而且我知道这可能很愚蠢!

谢谢你的帮助!

4

1 回答 1

4

你做事的顺序不对。您首先将更改应用于进度条,然后检查它是大于最大值还是小于最小值。将进度条想象成一杯水。你不能把它填满(现在人们没有关于 Ice 的聪明评论),因为那样你到处都有水。您也不能提取比玻璃杯中更多的水(请不要对现在的除湿发表聪明的评论)。你现在要做的是首先用太多的水填充进度条,让它越过边缘。然后检查你是否往玻璃杯里倒了太多水。而不是在将水倒入玻璃杯之前测量水的量。:D

你需要先做检查。像这样:

if prgHealth.Value + 10 > prgHealth.Maximum Then
  prgHealth.Value = prgHealth.Maximum
else
  prghealth.Value = prgHealth.Value + 10
end if

然后最低限度也是如此。

于 2012-12-11T06:55:30.003 回答