From 66b88d044ad5ef6559f7e695c5723ad10be5cf3c Mon Sep 17 00:00:00 2001 From: LeonardoBizzoni Date: Wed, 30 Jun 2021 11:57:49 +0200 Subject: [PATCH] Finished A* --- src/main/java/Main/AStar.java | 4 +++ src/main/java/Main/Map.java | 20 ++++++++++----- src/main/java/Main/PathfinderUtils.java | 24 ++++++++++++++++-- target/PathVisualizer-1.0-SNAPSHOT.jar | Bin 10685 -> 11007 bytes target/classes/Main/AStar.class | Bin 2824 -> 2946 bytes target/classes/Main/Map.class | Bin 7014 -> 7119 bytes target/classes/Main/PathfinderUtils.class | Bin 1597 -> 2008 bytes target/surefire-reports/Main.AppTest.txt | 2 +- target/surefire-reports/TEST-Main.AppTest.xml | 6 ++--- 9 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/main/java/Main/AStar.java b/src/main/java/Main/AStar.java index 086bc04..62aa128 100644 --- a/src/main/java/Main/AStar.java +++ b/src/main/java/Main/AStar.java @@ -5,6 +5,7 @@ public class AStar{ public AStar(Map map) { this.map = map; + PathfinderUtils.path.removeAll(PathfinderUtils.path); } public void start() { @@ -36,6 +37,9 @@ public class AStar{ if (nextX == PathfinderUtils.startNode.getX() && nextY == PathfinderUtils.startNode.getY()) return; if (nextX == PathfinderUtils.endNode.getX() && nextY == PathfinderUtils.endNode.getY()) { + PathfinderUtils.endNode.setParentNode(parent); + + PathfinderUtils.drawPath(); map.isFinished = true; ControlPanel.toggleRunBtn.setText("Clear"); map.repaint(); diff --git a/src/main/java/Main/Map.java b/src/main/java/Main/Map.java index cc96245..e63983d 100644 --- a/src/main/java/Main/Map.java +++ b/src/main/java/Main/Map.java @@ -91,16 +91,24 @@ class Map extends JPanel implements ActionListener, MouseListener, MouseMotionLi menu.renderMenu(); // Draws open nodes - g.setColor(Color.white); + g.setColor(new Color(69, 133, 136)); for (Node node : PathfinderUtils.openNodes) { g.fillRect(node.getX() + 1, node.getY() + 1, size - 1, size - 1); } // Draws closed nodes - g.setColor(new Color(132, 255, 138)); + g.setColor(new Color(77, 77, 77)); for (Node node : PathfinderUtils.closedNodes) { g.fillRect(node.getX() + 1, node.getY() + 1, size - 1, size - 1); } + + // if path is found start drawing the shortest path + if (isFinished) { + g.setColor(new Color(250, 189, 47)); + for (Node node : PathfinderUtils.path) { + g.fillRect(node.getX() + 1, node.getY() + 1, size - 1, size - 1); + } + } } // Drawing on the grid @@ -113,7 +121,7 @@ class Map extends JPanel implements ActionListener, MouseListener, MouseMotionLi // Checks if start node and end node are the same if (PathfinderUtils.startNode != null && PathfinderUtils.endNode != null) { - if (PathfinderUtils.checkDuplicateNode(PathfinderUtils.startNode, PathfinderUtils.endNode)) { + if (PathfinderUtils.isSameNode(PathfinderUtils.startNode, PathfinderUtils.endNode)) { JOptionPane.showMessageDialog(null, "End node and start node can't be the same node", "Same node error", JOptionPane.ERROR_MESSAGE); return; @@ -136,7 +144,7 @@ class Map extends JPanel implements ActionListener, MouseListener, MouseMotionLi // Checks if end node and start node are the same if (PathfinderUtils.startNode != null && PathfinderUtils.endNode != null) { - if (PathfinderUtils.checkDuplicateNode(PathfinderUtils.startNode, PathfinderUtils.endNode)) { + if (PathfinderUtils.isSameNode(PathfinderUtils.startNode, PathfinderUtils.endNode)) { JOptionPane.showMessageDialog(null, "End node and start node can't be the same node!", "SAME NODE ERROR", JOptionPane.ERROR_MESSAGE); return; @@ -159,10 +167,10 @@ class Map extends JPanel implements ActionListener, MouseListener, MouseMotionLi Node barrierNode = new Node(posX, posY); if(PathfinderUtils.startNode != null) - if(PathfinderUtils.checkDuplicateNode(barrierNode, PathfinderUtils.startNode)) + if(PathfinderUtils.isSameNode(barrierNode, PathfinderUtils.startNode)) return; if(PathfinderUtils.endNode != null) - if(PathfinderUtils.checkDuplicateNode(barrierNode, PathfinderUtils.endNode)) + if(PathfinderUtils.isSameNode(barrierNode, PathfinderUtils.endNode)) return; PathfinderUtils.barriers.add(barrierNode); diff --git a/src/main/java/Main/PathfinderUtils.java b/src/main/java/Main/PathfinderUtils.java index 2b2744a..20371d4 100644 --- a/src/main/java/Main/PathfinderUtils.java +++ b/src/main/java/Main/PathfinderUtils.java @@ -7,6 +7,7 @@ public class PathfinderUtils { static List barriers = new ArrayList<>(); static List openNodes = new ArrayList<>(); static List closedNodes = new ArrayList<>(); + static List path = new ArrayList<>(); static Node startNode, endNode; // Returns index of barrier if the coordinates are of a barrier node @@ -24,8 +25,8 @@ public class PathfinderUtils { barriers.remove(id); } - static boolean checkDuplicateNode(Node a, Node b) { - if(a.getX() == b.getX() && a.getY() == b.getY()) + static boolean isSameNode(Node a, Node b) { + if (a.getX() == b.getX() && a.getY() == b.getY()) return true; return false; } @@ -43,4 +44,23 @@ public class PathfinderUtils { } } } + + static void drawPath() { + if (path.size() == 0) { + Node node = endNode.getParentNode(); + + while (!isSameNode(node, startNode)) { + path.add(node); + + for (int i = 0; i < closedNodes.size(); i++) { + Node current = closedNodes.get(i); + + if (isSameNode(current, node)) { + node = current.getParentNode(); + break; + } + } + } + } + } } diff --git a/target/PathVisualizer-1.0-SNAPSHOT.jar b/target/PathVisualizer-1.0-SNAPSHOT.jar index 674d0e13e92634711300b474eeb3d686799d6789..c080b58abe2c60b61b835439ba8217d266f24b4a 100644 GIT binary patch delta 7052 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 delta 6703 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 VBng&OV@{6LElx_bTb93n{s-t<{|x{D diff --git a/target/classes/Main/AStar.class b/target/classes/Main/AStar.class index 8676543f083443aff7a11be4c46d6808aca453a1..01b3d6cc68535b2c47ca86c5e0694b0a40414633 100644 GIT binary patch literal 2946 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 D1ZP9= diff --git a/target/classes/Main/Map.class b/target/classes/Main/Map.class index fc2bb22d2a4d39132b909bf67233f496852a688a..d729a4180b1e23700c5a13756a20d73e8e822497 100644 GIT binary patch delta 975 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 diff --git a/target/surefire-reports/Main.AppTest.txt b/target/surefire-reports/Main.AppTest.txt index 1952558..c1e1e01 100644 --- a/target/surefire-reports/Main.AppTest.txt +++ b/target/surefire-reports/Main.AppTest.txt @@ -1,4 +1,4 @@ ------------------------------------------------------------------------------- Test set: Main.AppTest ------------------------------------------------------------------------------- -Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.029 s - in Main.AppTest +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.019 s - in Main.AppTest diff --git a/target/surefire-reports/TEST-Main.AppTest.xml b/target/surefire-reports/TEST-Main.AppTest.xml index 518b40f..7752e56 100644 --- a/target/surefire-reports/TEST-Main.AppTest.xml +++ b/target/surefire-reports/TEST-Main.AppTest.xml @@ -1,5 +1,5 @@ - + @@ -16,7 +16,7 @@ - + @@ -32,7 +32,7 @@ - + -- 2.52.0