对于这个名为AntCritter的新生物,我重写了processActors方法,现在它删除了周围的其他生物,而它应该改变它们的颜色。我已经尝试了一大堆东西,但我不能理解,因为在代码中,它直接告诉我们,如果它是一种抗菌素,就不要删除它。move方法与bug的方法基本相同。
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();
}
}
}发布于 2012-04-12 04:59:28
我对GridWorld一点也不熟悉,但这是第一个条件:
!(a instanceof Flower)当a为AntCritter时将为true。因此,if语句中的其余条件将永远不会被求值。
有关short-circuit评估的更多信息,请阅读。
https://stackoverflow.com/questions/10113716
复制相似问题