import java.awt.Color;

public class RandomWalker extends MobileSimObject {
	// OVERVIEW: A RandomWalker is a drunk simulator object that performace a random walk,
	//    moving one square in a random direction each step.

	private boolean inTurn;

	public RandomWalker() {
		inTurn = false;
	}

	public Color getColor() {
		if (inTurn) {
			return Color.green;
		} else {
			return Color.green;
		}
	} //@nowarn NonNullResult // ESC/Java doesn't know Color constants are not null

	//synchronized
	public void executeTurn() throws RuntimeException
	// Note: requires isInitialized is inherited from SimObject
	// EFFECTS: Picks a random direction and tries to move that way.
	//          If the move is successful, return true. If the move fails
	//          because the spot being attempted to move into is already
	//          occupied then return false.

	{
		inTurn = true;
		Direction dir = Direction.randomDirection();
		int newrow = getRow() + dir.northerlyDirection();
		int newcol = getColumn() + dir.easterlyDirection();

		if (getGrid().validLocation(newrow, newcol)) {
			synchronized (getGrid()) {
				if (getGrid().isSquareEmpty(newrow, newcol)) {
					setLocation(newrow, newcol);
				}
			}
		}

		inTurn = false;
	}
}