Пример #1
0
  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);
      }
    }
  }
Пример #2
0
 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();
 }