Generate walls procedurally at runtime
This commit is contained in:
parent
2031291d00
commit
96f120d943
@ -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);
|
||||
}
|
||||
|
@ -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() {
|
||||
|
Loading…
Reference in New Issue
Block a user