import java.awt.Color; import java.util.ArrayList; import com.collegeboard.grid.Grid; import com.collegeboard.grid.Location; import com.collegeboard.sim.Actor; import com.collegeboard.sim.Rock; /* * Created on Apr 29, 2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Generation - Code and Comments */ public class RockFinder extends Actor { public void act() { if (rockLocation != null) return; Grid gr = getGrid(); Location loc = getLocation(); ArrayList nbrs = gr.getAllNeighborLocations(loc); ArrayList emptyNbrs = new ArrayList(); for (Location nl : nbrs) { Actor nbr = gr.get(nl); if (nbr instanceof Rock) { // we found a rock rockLocation = nl; setColor(Color.YELLOW); return; } else if (nbr instanceof RockFinder) { // ask the buddy RockFinder buddy = (RockFinder) nbr; rockLocation = buddy.getRockLocation(); if (rockLocation != null) { setColor(Color.YELLOW); return; } } else if (nbr == null) emptyNbrs.add(nl); } // no luck--make a buddy if (emptyNbrs.size() > 0) { RockFinder buddy = new RockFinder(); buddy.putInGrid(gr, emptyNbrs.get(0)); } } public Location getRockLocation() { return rockLocation; } private Location rockLocation; }