diff --git a/simple-pathfinding/src/main/java/fr/uha/gasser/pathfinding/algorithm/AStarSearch.java b/simple-pathfinding/src/main/java/fr/uha/gasser/pathfinding/algorithm/AStarSearch.java index 28a31f7..571c034 100644 --- a/simple-pathfinding/src/main/java/fr/uha/gasser/pathfinding/algorithm/AStarSearch.java +++ b/simple-pathfinding/src/main/java/fr/uha/gasser/pathfinding/algorithm/AStarSearch.java @@ -69,7 +69,7 @@ class AStarSearch { // If the node is a wall, don't add it to the list if (grid.get(loc).isWall()) continue; // Don't overflow off the grid - if (loc.x > gridSize.width || loc.y > gridSize.height) continue; + if (loc.x >= gridSize.width || loc.y >= gridSize.height || loc.x < 0 || loc.y < 0) continue; node.setLoc(loc); neighbors.add(node); } diff --git a/simple-pathfinding/src/main/java/fr/uha/gasser/pathfinding/ui/App.java b/simple-pathfinding/src/main/java/fr/uha/gasser/pathfinding/ui/App.java index 3083003..23d31ac 100644 --- a/simple-pathfinding/src/main/java/fr/uha/gasser/pathfinding/ui/App.java +++ b/simple-pathfinding/src/main/java/fr/uha/gasser/pathfinding/ui/App.java @@ -29,6 +29,7 @@ public class App extends JFrame { private App() throws HeadlessException { super("Pathfinding"); grid = new Grid(ROWS, COLS, CELL_SIZE); + generateWalls(); setupInterface(); pack(); setVisible(true); @@ -77,6 +78,16 @@ public class App extends JFrame { getContentPane().add(gridPane); } + /** + * Generate walls randomly at runtime + */ + private void generateWalls() { + for (Cell cell : grid) { + final double wallProb = (Math.random() * ((0 - 0.2) + 1)); + if (Math.random() < wallProb) grid.setWall(cell.getPos(), true); + } + } + private void setWallPlacing(JMenuItem placeWallItem) { // Invert selection state placeWallItem.setSelected(!placeWallItem.isSelected()); @@ -100,6 +111,7 @@ public class App extends JFrame { startNode = null; endNode = null; grid.clear(); + generateWalls(); } private void doCancel() {