Code (a class and a runner):
import info.gridworld.actor.ActorWorld;
import info.gridworld.actor.Bug;
import info.gridworld.actor.Rock;
import info.gridworld.actor.Actor;
import info.gridworld.actor.Flower;
import info.gridworld.grid.Location;
import info.gridworld.grid.Grid;
class Skipper extends Actor
{
public boolean canSkip()
{
Grid<Actor>gr = getGrid();
if (gr == null)
return false;
Location loc = getLocation();
Location first = loc.getAdjacentLocation(getDirection());
if (!gr.isValid(first))
return false;
Actor firstNeighbor=gr.get(first);
if ((firstNeighbor==null) || (firstNeighbor instanceof Flower))
{
}
else
return false;
Location last = first.getAdjacentLocation(getDirection());
if (!gr.isValid(last))
return false;
Actor secondNeighbor=gr.get(last);
return (secondNeighbor==null) || (secondNeighbor instanceof Flower);
}
public void turnAround()
{
setDirection(getDirection()+180);
}
public void act()
{
if(canSkip())
{
Location loc = getLocation();
Location next = loc.getAdjacentLocation(getDirection());
Location go = next.getAdjacentLocation(getDirection());
moveTo(go);
}
else
{
turnAround();
}
}
}
public class SkipRunner
{
public static void main(String[] args)
{
ActorWorld world = new ActorWorld();
world.add(new Skipper());
world.add(new Rock());
world.show();
}
}

New Topic/Question
Reply



MultiQuote







|