rendered paste body// Jim Herrero
import java.util.Random;
import java.awt.Color;
import java.util.ArrayList;
public class PredatorFish extends Fish
{
public PredatorFish(Environment env, Location loc)
{
super(env,loc);
}
public PredatorFish(Environment env, Location loc, Direction dir)
{
super(env,loc,dir);
}
public PredatorFish(Environment env, Location loc, Direction dir, Color col)
{
super(env,loc,dir,col);
}
public String toString()
{
return "ForwardFish " + super.toString();
}
protected Location nextLocation()
{
ArrayList nbrs = environment().neighborsOf(location());
Direction oppositeDir = direction().reverse();
Location locationBehind = environment().getNeighbor(location(),
oppositeDir);
nbrs.remove(locationBehind);
Debug.print("Possible new locations are: " + nbrs.toString());
for(Object l:nbrs)
{
Location loc = (Location)l;
if(!environment().isEmpty(loc))
{
Debug.print("Found food at: " + loc);
return loc;
}
}
Random randNumGen = RandNumGenerator.getInstance();
int randNum = randNumGen.nextInt(nbrs.size());
return (Location) nbrs.get(randNum);
}
protected void move()
{
Debug.print("PredatorFish " + toString() + " attempting to move. ");
Location nextLoc = nextLocation();
Location oldLoc = location();
if(!environment().isEmpty(nextLoc))
{
((Fish)environment().objectAt(nextLoc)).die();
Debug.println(" PredatorFish made a kill at " + location());
}
changeLocation(nextLoc);
Direction newDir = environment().getDirection(oldLoc, nextLoc);
changeDirection(newDir);
Debug.println(" Moves to " + location() + direction());
}
}