如何在不超过最大值的情况下递增变量?

我正在为学校开发一个简单的视频游戏程序,并且我创建了一种方法,如果调用该方法,玩家将获得15点生命值。我必须将健康状况保持在最大100,并且由于我此时有限的编程能力,我正在做这样的事情。

public void getHealed(){
    if(health <= 85)
        health += 15;
    else if(health == 86)
        health += 14;
    else if(health == 87)
    health += 13; 
}// this would continue so that I would never go over 100

我知道我的语法并不完美,但我的问题是,什么是更好的方法,因为我也必须对伤害点做类似的事情,而不是低于0。

这称为饱和算术


答案 1

我会这样做。它基本上需要100(最大生命值)和15点额外点的生命值之间的最小值。它确保用户的运行状况不超过 100。

public void getHealed() {
    health = Math.min(health + 15, 100);
}

要确保生命值不会降至零以下,可以使用类似的函数:。Math.max

public void takeDamage(int damage) {
    if(damage > 0) {
        health = Math.max(health - damage, 0);
    }
}

答案 2

只需在健康中添加15,那么:

health += 15;
if(health > 100){
    health = 100;
}

但是,正如平淡所指出的那样,有时使用多线程(一次执行多个代码块)在任何时候都使运行状况超过100可能会导致问题,并且多次更改运行状况属性也可能是不好的。在这种情况下,您可以执行此操作,如其他答案中所述。

if(health + 15 > 100) {
    health = 100;
} else {
    health += 15;
}