import java.awt.Color;

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

	private boolean /*@non_null@*/inTurn;
	// Currently in the middle of a turn (used for coloring)

	public RandomWalker() {
		inTurn = false;

	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, set new location. If the move fails
	//          because the spot being attempted to move into is already
	//          occupied then try another direction.

		inTurn = true;
		Direction dir = Direction.randomDirection();
		int newy = getY() + dir.northerlyDirection();
		int newx = getX() + dir.easterlyDirection();
			if (getGrid().validLocation(newx, newy)) {
					if (getGrid().isSquareEmpty(newx, newy)) { //@nowarn Pre
					// Here, we pretend there is a lot of compution to do by sleeping,
					// to make race conditions more likely.
					setLocation(newx, newy);
		inTurn = false;



	public Color getColor()
	//	Effects: returns the color associated with this
		if (inTurn) {
			return Color.white;
		} else {
			return Color.cyan;
	} //@nowarn Post // ESC/Java doesn't know Color constants are not null

//Class borrowed from Saturday Night Simulator and CS201J Website - PS5