From 96f120d943f7bf13ab4aa680226a36fd415670a0 Mon Sep 17 00:00:00 2001 From: Thibaud Date: Fri, 12 Oct 2018 12:36:44 +0200 Subject: [PATCH] Generate walls procedurally at runtime --- .../gasser/pathfinding/algorithm/AStarSearch.java | 2 +- .../main/java/fr/uha/gasser/pathfinding/ui/App.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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() {