2

我正在使用以下代码检查我的健康状况是否超过允许的最大健康状况:

    Public Sub healthCheck()

    If Player.CurrentHealth > Player.MaxHealth Then
        MsgBox(Player.CurrentHealth & "&" & Player.MaxHealth)
        Player.CurrentHealth = Player.MaxHealth
        MsgBox(Player.CurrentHealth & "&" & Player.MaxHealth)

    ElseIf (0 > Player.CurrentHealth) Then

        Player.CurrentHealth = 0

    End If

End Sub

我添加了用于调试目的的消息框,它们输出以下字符串:

第一个消息框 = 8&20

第二个消息框 = 20&20

如果第一个告诉我

currenthealth = 8 

maxhealth = 20

为什么它甚至进入 if 构造?据我所知,8不高于20

编辑:

这似乎只发生在 10 马力以下!所以在 10/20 时它不会进入 if 并且只是跳过 if 构造,但是在 9/20 时它会重置为 20/20(好像比较返回 true)

4

2 回答 2

2

您的健康变量可能是字符串:

MsgBox("8" > "20") // Outputs True

正确与

Dim currentHealth As Int32 = Int32.Parse(Player.CurrentHealth)
Dim maxHealth As Int32 = Int32.Parse(Player.MaxHealth)

If currentHealth > maxHealth Then
    MsgBox(currentHealth & "&" & maxHealth)
    Player.CurrentHealth = PLayer.MaxHealth
    currentHealth = maxHealth
    MsgBox(currentHealth & "&" & maxHealth)

ElseIf (0 > currentHealth) Then

    Player.CurrentHealth = 0

End If
于 2013-05-29T12:45:07.357 回答
1

这个问题在评论中得到了回答:

显示 currenthealth 和 maxhealth 的声明。如果它们是可以解释您在此处看到的内容的字符串。——凯特·格雷戈里

哦,亲爱的主,你是对的!我很惭愧忽略了这一点.. – Gutanoth

于 2013-05-29T12:42:58.993 回答