diff --git a/src/main/MazeMain.java b/src/main/MazeMain.java index 1267841..cb417a9 100644 --- a/src/main/MazeMain.java +++ b/src/main/MazeMain.java @@ -5,13 +5,12 @@ public class MazeMain { public static void main(String[] args) throws Exception { - System.out.println("MazeMain..."); Cell cell = new Cell(1, 2); - System.out.println(cell); Grid grid = new Grid(10, 10); - System.out.println(grid); + // System.out.println(grid); BinaryTree bt = new BinaryTree(grid); + System.out.println(bt.toString()); } } diff --git a/src/main/net/curtlewis/maze/algorithm/BinaryTree.java b/src/main/net/curtlewis/maze/algorithm/BinaryTree.java index d4cf809..6f50773 100644 --- a/src/main/net/curtlewis/maze/algorithm/BinaryTree.java +++ b/src/main/net/curtlewis/maze/algorithm/BinaryTree.java @@ -13,6 +13,7 @@ public BinaryTree(Grid grid) { this.grid = grid; + init(); } private void init() { @@ -23,15 +24,25 @@ for(int c = 0; c < cols; c++) { Cell cell = grid.getCellAt(r, c); List neighbors = new ArrayList<>(); - if (cell.getNorth() != null) { neighbors.add(cell); } - if (cell.getEast() != null) { neighbors.add(cell); } + if (cell.getNorth() != null) { + neighbors.add(cell.getNorth()); + } + if (cell.getEast() != null) { neighbors.add(cell.getEast()); } // pick a random cell from the neighbors list - Cell neighbor = neighbors.get( new Random().nextInt(neighbors.size()) ); - - cell.link(neighbor); + if (neighbors.size() > 0) { + int randVal = new Random().nextInt(neighbors.size()); + Cell neighbor = neighbors.get(randVal); + cell.link(neighbor); + } } } + + } + + public String toString() { + System.out.println("Binary Tree Algorithm"); + return grid.toString(); } } diff --git a/src/main/net/curtlewis/maze/grid/Cell.java b/src/main/net/curtlewis/maze/grid/Cell.java index 34ad9cb..05044cf 100644 --- a/src/main/net/curtlewis/maze/grid/Cell.java +++ b/src/main/net/curtlewis/maze/grid/Cell.java @@ -49,6 +49,7 @@ if (bidi) { cell.link(this, false); } + } public void link(Cell cell) { diff --git a/src/main/net/curtlewis/maze/grid/Grid.java b/src/main/net/curtlewis/maze/grid/Grid.java index 9cc1867..878977a 100644 --- a/src/main/net/curtlewis/maze/grid/Grid.java +++ b/src/main/net/curtlewis/maze/grid/Grid.java @@ -103,13 +103,14 @@ String bottom = "+"; for(int c = 0; c < columns; c++) { - Cell cell = getCellAt(r, c); + Cell sell = getCellAt(r, c); + Cell cell = sell != null ? sell : new Cell(-1, -1); String body = " "; // <-- 3 spaces - String eastBoundary = (cell.hasLink(cell.getEast())) ? " " : "|"; + String eastBoundary = cell.hasLink(cell.getEast()) ? " " : "|"; top = top + body + eastBoundary; - String southBoundary = (cell.hasLink(cell.getSouth())) ? " " : "---"; + String southBoundary = cell.hasLink(cell.getSouth()) ? " " : "---"; String corner = "+"; bottom = bottom + southBoundary + corner; }