@Override
	public Point getTarget(GameState state) {
		List<Point> candidates = new ArrayList<Point>();
		Unit[][] grid;
		switch(gridChoice) {
		case OURS:
			grid = state.getOurGrid();
			break;
		case THEIRS:
			grid = state.getTheirGrid();
			break;
		default:
			throw new ImpossibleException();
		}
		
		for(int x = 0; x < 3; x++) {
			for(int y = 0; y < 5; y++) {
				if((grid[x][y] == null && occupied != Occupied.OCCUPIED)
						|| (grid[x][y] != null && occupied != Occupied.FREE)) {
					candidates.add(new Point(x, y));
				}
			}
		}
		
		if(candidates.isEmpty()) {
			return null;
		}
		return candidates.get(random.nextInt(candidates.size()));
	}