public boolean move()
	{
		// Don't let him move out of bounds.
		/*if ( (position.x + WIDTH + direction.x > Map.WIDTH) || 
				(position.x + direction.x < 0) ||
				(position.y + HEIGHT + direction.y > Map.HEIGHT) || 
				(position.y + direction.y < 0))
			return;*/
		if (position.x + WIDTH + direction.x > Map.WIDTH)
		{
			position.x=0;
			room--;
			return false;
		}
		else if (position.x + direction.x < 0)
		{
			room++;
			position.x=Map.WIDTH-WIDTH;
			return false;
		}
		else if (position.y + HEIGHT + direction.y > Map.HEIGHT)
		{
			room-=3;
			position.y=Statusbar.Y_START_POSITION;
			return false;
		}
		else if (position.y + direction.y < Statusbar.Y_START_POSITION)
		{
			room+=3;
			position.y=Map.HEIGHT-HEIGHT;
			return false;
		}
		
		Rectangle newPosition = new Rectangle(position.x + direction.x,
				position.y + direction.y,
				WIDTH, HEIGHT);
		
		// Don't move if he's going to hit a wall
		for (int i=0; i<map.getWalls(quadrant).size(); i++)
		{
			if (newPosition.intersects(map.getWalls(quadrant).get(i)))
				return true;
		}
		
		// finally, move and figure out where he is
		changePosition(direction);
		determineQuadrant();
		return true;
	}