首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查ArrayList中的每个对象本身

检查ArrayList中的每个对象本身
EN

Stack Overflow用户
提问于 2013-05-04 02:01:13
回答 1查看 142关注 0票数 0

在我正在开发的一个游戏中,我实现了一些增强功能。我要你杀死的僵尸在同一个地方产生能量。

我用ArrayList生成所有的僵尸,因此当我杀死僵尸时,我必须在僵尸的那个位置产卵通电,而不是在任何其他僵尸位置。我在paintComponent(Graphics g)方法(ArrayList是僵尸)中获得了这段代码。

代码语言:javascript
复制
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时,只有这个僵尸会死亡,而不是所有的僵尸)?

代码语言:javascript
复制
if(z.getHealth() == 50) z.setAlive(false);
EN

回答 1

Stack Overflow用户

发布于 2013-05-04 02:11:20

我认为处理这种情况的最好方法是..健康是如何以及何时减少的。那么,您为什么不在使用以下语句的任何位置创建映像

代码语言:javascript
复制
if(z.getHealth() == 50) z.setAlive(false);

代码语言:javascript
复制
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());
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16365006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档