在GridWorld中变形小动物?

时间:2012-04-11 20:47:47

标签: java debugging gridworld

对于这个名为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();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我根本不熟悉GridWorld,但这是第一个条件:

!(a instanceof Flower)
truea时,

将为AntCritter。所以if语句中的其他条件永远不会被评估。

阅读short-circuit评估以获取更多信息。