在我正在开发的游戏中,我实现了一些通电。我希望你杀死的僵尸死在同一个地方生成通电。
我用 a 生成所有僵尸,ArrayList
因此当我杀死一个僵尸时,我必须在该僵尸位置而不是任何其他僵尸位置生成通电。我在一个paintComponent(Graphics g)
方法中得到了这个代码(僵尸是ArrayList
)。
for(int i = 0; i < zombies.size(); i++){
Zombie z = (Zombie) zombies.get(i);
if(!z.isAlive()){
ImageIcon ii = new ImageIcon("Health.png");
image = ii.getImage();
g2D.drawImage(image, (int) z.getX(), (int) z.getY(), this);
System.out.println("Zombie state: " + z.isAlive());
}
}
问题是当我杀死一个僵尸时,它不会在该僵尸位置生成健康包(它也不会在任何其他僵尸位置生成它)。如果我删除!
if 语句中的健康包,则会在所有僵尸中绘制一个健康包,所以我知道它应该在正确的位置生成健康包。
它只打印一次文本“Zombie state: false”,因此它与检查僵尸是否活着有关(可能只有z.isAlive
当所有僵尸都死了时才算作是假的)。
isAlive
inZombie
只是一个布尔值,默认情况下等于 true,如果您使用此 if 语句射击僵尸,我将其设置为等于 false。我将如何检查每个僵尸是否还活着(我很确定我已经这样做了,因为当一个僵尸的生命值等于 50 时,只有那个僵尸会死,而不是全部死)?
if(z.getHealth() == 50) z.setAlive(false);