如何从ArrayList获取特定对象

时间:2013-04-25 17:46:58

标签: java object arraylist get 2d

在我正在制作的游戏中,我需要检查两个敌人是否相互碰撞,如果它们只是碰撞,那么两个敌人应该受到影响,而不是每个敌人都存在。因此,我需要在它们碰撞时从ArrayList中获取两个敌人,这样只有它们才会受到影响。我该怎么做?

这是将敌人添加到ArrayList

的代码
zombie.add(new Zombie(randomXSpawn,randomYSpawn));

要检查敌人是否彼此合并,我目前使用此代码

Zombie z = (Zombie) zombie.get(i);
Rectangle r2 = z.getBounds();
if(r2.intersects(r2)){
     //Code goes here
}

2 个答案:

答案 0 :(得分:2)

你需要检查每对僵尸,看看他们是否发生了碰撞。执行此检查的最简单方法是:

for (int i = 0; i < zombie.size(); i++) {
    Rectangle r1 = zombie.get(i).getBounds();
    for (int j = i+1; j < zombie.size(); j++) {
        if (r1.intersects(zombie.get(j).getBounds())) {
            // Code goes here
        }
    }
}

请注意j每次都不是从零开始。这使得只要每个僵尸只在列表中一次,你将永远不会检查同一对两次,并且你不会检查僵尸对抗自己。

此外,作为一般编程提示,请将列表名称更改为zombies。它有点清晰,养成为你的变量使用好名字的习惯,可以避免以后的麻烦。

答案 1 :(得分:0)

此外,如果你还没有这样做,你可能想要在僵尸不能到达的地方(房屋,障碍物等)创建边界。

罗布的答案非常好。