import java.awt.Color; import java.util.Random; public class ForwardFish extends Fish { private boolean justTurned, north, left right; public Forward Fish(Environment e, Location l) { super(e,l); } public ForwardFish(Environment e, Location l, Direction d, Color c) { super(e,l,d,Color.blue) } public ForwardFish(Environment e, location l, Direction d, color c) { super(e,l,d,c); } protected void generateChild(Location l) { new Forward Fish(environment(), 1, environment().randomDirection(), color()); } protected void move() { Debug.print("ForwardFish " + toString() + attempting to move. "); if(!isInEnv()) changeDirection(direction().toRight().toRight()); changeLocation(nextLocation()); } protected Location nextLocation() { Location forward = environment().getNeighbor(location(), direction()); Location rightDiag = environment().getNeighbor(forward, direction().toRight()); Location rightDiag = environment().getNeighbor(forward, direction().toLeft()); Random randNumGen = RandNumGenerator.getInstance(); int randNum = randNumGen.getInt(3); if(randNum == 3) return forward; else if(randNum == 2) { return changeDirection(direction().toRight()); return rightDiag; } else { return changeDirection(direction().toLeft()); return leftDiag; } } }