checkDeath()没有被调用

时间:2014-04-20 20:22:26

标签: java arrays

我正在开展塔防计划,我遇到了一个小问题。

public void loseHealth(int amo) {
            health -= amo;
            checkDeath();
        }
public void checkDeath() {
            if(health == 0) {
                deleteMob();
            }
        }

这样可行,但是当我尝试以下操作时,运行状况达到零并且不会删除mob。我一直试图让这个工作大约2天,似乎无法做到正确。我找不到可能有用的东西是不成功的,但我可能找不到合适的地方。

    public void loseHealth(int amo) {
        shot = Value.damage[0] += amo;
        health -= shot;
        checkDeath();
    }

    public void checkDeath() {
        if(health == 0) {
            deleteMob();
        }
    }

我宣布了一个数组,其中包括:

public static int[] damage = {5, 10};

我在这里有两个原因是因为我有两座塔,我试图做不同的伤害。现在我只想让它工作我可以为不同的塔做部分。如果您需要更多信息,请告诉我们。

3 个答案:

答案 0 :(得分:2)

这是因为您的health变量降低到0以下。因此,health == 0将始终返回false。请尝试以下方法:

public void checkDeath() {
    if(health <= 0) {
        deleteMob();
    }
}

答案 1 :(得分:0)

您的loseHealth方法可能会为健康产生负值。如果是这种情况,则您的checkDeath方法必须使用if(health <=0)作为条件。

答案 2 :(得分:0)

您的问题是,如果您的健康整数为0,您将明确检查。在获得造成的伤害后,暴徒的健康计数器很可能是负数。

使用

if(health <= 0)

而不是

if(health == 0)