Visual Basic进度条保持低于0

时间:2015-04-17 11:59:54

标签: vb.net

我正在制作一个小游戏,问题是法术攻击造成了很大的伤害并且变为负面但是我已经创建了一个IF语句,如果进度条的值低于0但是仍然会使损坏= 0我真的很困惑

Private Sub Btnspell_Click(sender As Object, e As EventArgs) Handles 

 Btnspell.Click
    sdamage = spell.Next(5, 10)


    If Playermana.Value < 20 Then
        Playermana.Value = Playermana.Value - 0
    End If

    If Playermana.Value <= 19 Then
        MsgBox("Not enough mana")
    End If
    If farmerhealth.Value > 0 Then
        farmerhealth.Value = farmerhealth.Value - sdamage
        Playermana.Value = Playermana.Value - 20
        Timer1.Start()


    End If
    If farmerhealth.Value <= 0 Then
        MsgBox("You have killed the farmer")
        sdamage = 0
        farmerhealth.Value = farmerhealth.Value + 0

    End If
End Sub
End Class

1 个答案:

答案 0 :(得分:5)

已更新以避免HP名称

我认为你的价值仍然是负值,因为你有:

 If farmerhealth.Value > 0 Then
    farmerhealth.Value = farmerhealth.Value - sdamage
    Playermana.Value = Playermana.Value - 20
    Timer1.Start()
 End If

此处,例如,如果你有farmerhealth.Value = 1,则会造成伤害,但它可能是sdamage = 7,因此会变为负数(farmerhealth.Value - sdamage会返回-6)。

只需检查此语句中farmerhealth.Value - sdamage是否为否定,然后将值0改为farmerhealth.Value

更新2:然后应该结束这样的事情:

 If farmerhealth.Value > 0 Then
    If (farmerhealth.Value - sdamage) <= 0 then
      farmerhealth.Value = 0
    else
      farmerhealth.Value = farmerhealth.Value - sdamage
    End If
    Playermana.Value = Playermana.Value - 20
    Timer1.Start()
 End If