import java.util.*;

public class Map {

    private Room[][] rooms;
    private boolean[][] visited;
    private int height;
    private int width;
    private int maxMonsterStrength = 20;
    private int maxMonsterSkill = 20;
    private int maxMonsterHitPoints = 20;
    private int maxMonsterArmorClass = 20;
    private int maxWeaponDamageMod = 5;


    public Vector getUnvisitedNeighbors (Room room) {
		Vector v = new Vector();
		int r = room.getRow();
		int c = room.getCol();
		if ( isValidRoom(r, c-1) && !visited[r][c-1] )
		    v.add (rooms[r][c-1]);
		if ( isValidRoom(r-1, c) && !visited[r-1][c] )
		    v.add (rooms[r-1][c]);
		if ( isValidRoom(r,c+1) && !visited[r][c+1] )
		    v.add (rooms[r][c+1]);
		if ( isValidRoom(r+1,c) && !visited[r+1][c] )
		    v.add (rooms[r+1][c]);
		return v;
    }

    public static boolean connectRooms (Room r1, Room r2) {
		// this variable will hold true or false if this method connected
		// two adjacent rooms
		boolean didARoomConnection = false;
		if ( (r1.getRow() == r2.getRow()+1) &&
		     (r1.getCol() == r2.getCol()) ) {
		    // r1 is south of r2
		    r1.setRoomToNorth(r2);
		    r2.setRoomToSouth(r1);
		    didARoomConnection = true;
		} else if ( (r1.getRow() == r2.getRow()-1) &&
			    (r1.getCol() == r2.getCol()) ) {
		    // r1 is north of r2
		    r2.setRoomToNorth(r1);
		    r1.setRoomToSouth(r2);
		    didARoomConnection = true;
		} else if ( (r1.getRow() == r2.getRow()) &&
			    (r1.getCol() == r2.getCol()+1) ) {
		    // r1 is east of r2
		    r2.setRoomToEast(r1);
		    r1.setRoomToWest(r2);
		    didARoomConnection = true;
		} else if ( (r1.getRow() == r2.getRow()) &&
			    (r1.getCol() == r2.getCol()-1) ) {
		    // r1 is east of r2
		    r1.setRoomToEast(r2);
		    r2.setRoomToWest(r1);
		    didARoomConnection = true;
		}
		return didARoomConnection;
    }

	void connectAllRooms() {
		for ( int c1 = 0; c1 < width; c1++ )
			for ( int c2 = 0; c2 < width; c2++ )
				for ( int r1 = 0; r1 < height; r1++ )
					for ( int r2 = 0; r2 < height; r2++ )
						connectRooms (getRoom(r1,c1), getRoom(r2,c2));
	}

	boolean isValidRoom (int i, int j) {
		// to be filled in...
		return false;
    }
    
    Room getRoom (int c, int r) {
    	// to be filled in...
    	return null;
    }

}
