public void configureCell(int row, int column, Set<ExitDirections> exitDirections) { MazeNode node = mazeGrid.get(row).get(column); MazeNode linkMe = null; for (ExitDirections dir : exitDirections) { switch (dir) { case NORTH: linkMe = (row > 0) ? mazeGrid.get(row - 1).get(column) : null; break; case SOUTH: linkMe = (row < height - 1) ? mazeGrid.get(row + 1).get(column) : null; break; case EAST: linkMe = (column < width - 1) ? mazeGrid.get(row).get(column + 1) : null; break; case WEST: linkMe = (column > 0) ? mazeGrid.get(row).get(column - 1) : null; break; } if (linkMe != null) { node.getExits().add(linkMe); linkMe.getExits().add(node); } } }
public void saveMaze(String fileName) throws FileNotFoundException { PrintWriter writer = new PrintWriter(fileName); writer.println(width + DELIMITER + height); for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { MazeNode node = mazeGrid.get(i).get(j); writer.print(node.getGridRow() + DELIMITER + node.getGridColumn()); for (MazeNode link : node.getExits()) { if (link.getGridColumn() - j == 1) { writer.print(DELIMITER + ExitDirections.EAST.name()); } else if (link.getGridColumn() - j == -1) { writer.print(DELIMITER + ExitDirections.WEST.name()); } else if (link.getGridRow() - i == 1) { writer.print(DELIMITER + ExitDirections.SOUTH.name()); } else if (link.getGridRow() - j == -1) { writer.print(DELIMITER + ExitDirections.NORTH.name()); } } writer.println(""); } } writer.flush(); writer.close(); }