0

在我正在开发的游戏中,我实现了一些通电。我希望你杀死的僵尸死在同一个地方生成通电。

我用 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当所有僵尸都死了时才算作是假的)。

isAliveinZombie只是一个布尔值,默认情况下等于 true,如果您使用此 if 语句射击僵尸,我将其设置为等于 false。我将如何检查每个僵尸是否还活着(我很确定我已经这样做了,因为当一个僵尸的生命值等于 50 时,只有那个僵尸会死,而不是全部死)?

if(z.getHealth() == 50) z.setAlive(false);
4

1 回答 1

0

我认为处理这种情况的最佳方法是.. 健康状况如何以及何时降低。那么为什么不在使用此语句的任何地方创建图像

if(z.getHealth() == 50) z.setAlive(false);

if(z.getHealth() == 50){
    z.setAlive(false);
    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());
}
于 2013-05-03T18:11:20.097 回答