在我正在开发的一个游戏中,我实现了一些增强功能。我要你杀死的僵尸在同一个地方产生能量。
我用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语句中的!,将在所有僵尸中提取一个健康包,这样我就知道它应该在正确的位置产生健康包。
它只打印一次文本“僵尸状态: false”,所以它与检查僵尸是否活着有关(可能只有当所有僵尸都死了时,它才会算作z.isAlive是false )。
Zombie中的isAlive只是一个布尔值,默认情况下等于true,如果您使用此if -语句射杀僵尸,我已将其设置为等于false。我如何检查每个僵尸是否还活着(我很确定我已经这样做了,因为当一个僵尸的生命值等于50时,只有这个僵尸会死亡,而不是所有的僵尸)?
if(z.getHealth() == 50) z.setAlive(false);发布于 2013-05-04 02:11:20
我认为处理这种情况的最好方法是..健康是如何以及何时减少的。那么,您为什么不在使用以下语句的任何位置创建映像
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());
}https://stackoverflow.com/questions/16365006
复制相似问题