对于这个名为AntCritter的新生物,我覆盖了processActors方法,现在当它应该改变它们的颜色时,它会移除周围的其他antcritters。我已经尝试了很多东西,但是我无法弄明白,因为在代码中它直接说如果它是一个antcritter就不会删除actor。移动方法与错误基本相同。
public void processActors(ArrayList<Actor> actors)
{
for(Actor a: actors)
{
if(!(a instanceof AntCritter)||!(a instanceof Flower)||!(a instanceof KingCrab))
a.removeSelfFromGrid();
if(a instanceof AntCritter)
{
setColor(Color.BLUE);
a.setColor(Color.PINK);
((AntCritter) a).move();
}
}
}
答案 0 :(得分:1)
我根本不熟悉GridWorld,但这是第一个条件:
!(a instanceof Flower)
当true
为a
时,将为AntCritter
。所以if
语句中的其他条件永远不会被评估。
阅读short-circuit评估以获取更多信息。