From: LeonardoBizzoni Date: Thu, 17 Jun 2021 10:05:10 +0000 (+0200) Subject: Initial commit with basic funtionality X-Git-Url: http://git.leonardobizzoni.com/?a=commitdiff_plain;h=df2bd6e4685127e062456a8f1028f4e035eeaf0b;p=astar-visualizer Initial commit with basic funtionality --- df2bd6e4685127e062456a8f1028f4e035eeaf0b diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..d6aede7 --- /dev/null +++ b/pom.xml @@ -0,0 +1,75 @@ + + + + 4.0.0 + + Main + PathVisualizer + 1.0-SNAPSHOT + + PathVisualizer + + http://www.example.com + + + UTF-8 + 1.7 + 1.7 + + + + + junit + junit + 4.11 + test + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/src/main/java/Main/App.java b/src/main/java/Main/App.java new file mode 100644 index 0000000..5e562da --- /dev/null +++ b/src/main/java/Main/App.java @@ -0,0 +1,9 @@ +package Main; + +public class App { + + public static void main(String[] args) { + new Map(); + } + +} diff --git a/src/main/java/Main/Map.java b/src/main/java/Main/Map.java new file mode 100644 index 0000000..4c24ad5 --- /dev/null +++ b/src/main/java/Main/Map.java @@ -0,0 +1,168 @@ +/* TODO + * aggiungere una sorta di menu dove scegliere: + * - velocità di riproduzione + * - tipo di algoritmo: + * + a* + * + dijkstra + * + greedy best-first search + * + swarm + * + convergent swarm + * + bidirectional swarm + * + breadth-first search + * + depth-first search + * zoommare sulla griglia + */ +package Main; + +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; + +import java.awt.Color; +import java.awt.Graphics; +import java.awt.event.MouseListener; +import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionListener; +import java.util.ArrayList; +import java.util.List; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; + +class Map extends JPanel implements MouseListener, MouseMotionListener, KeyListener { + private JFrame window; + private int size = 30; + private char key = (char) 0; + + private Node startNode, endNode; + private List barriers = new ArrayList<>(); + + public Map() { + addMouseListener(this); + addKeyListener(this); + setFocusable(true); + addMouseMotionListener(this); + + // Settings up the window + window = new JFrame(); + window.setContentPane(this); + window.setTitle("Pathfinding Algorithm Visualizer"); + window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + window.pack(); + window.setVisible(true); + + this.revalidate(); + this.repaint(); + } + + public void paintComponent(Graphics g) { + super.paintComponent(g); + + // Draws the grid + g.setColor(Color.lightGray); + for (int i = 0; i < this.getWidth(); i += size) { + for (int j = 0; j < this.getHeight(); j += size) { + g.drawRect(i, j, size, size); + } + } + + // Draws start node + if (startNode != null) { + g.setColor(new Color(117, 110, 202)); + g.fillRect(startNode.getX() + 1, startNode.getY() + 1, size - 1, size - 1); + } + + // Draws end node + if (endNode != null) { + g.setColor(new Color(204, 36, 29)); + g.fillRect(endNode.getX() + 1, endNode.getY() + 1, size - 1, size - 1); + } + + // Draws barrier nodes + g.setColor(new Color(40, 40, 40)); + for (Node node : barriers) { + g.fillRect(node.getX() + 1, node.getY() + 1, size - 1, size - 1); + } + } + + // Drawing on the grid + public void mapDrawing(MouseEvent e) { + if (SwingUtilities.isLeftMouseButton(e)) { + if (key == 's') { + int posX = e.getX() % size; + int posY = e.getY() % size; + + if (startNode == null) { + startNode = new Node(e.getX() - posX, e.getY() - posY); + } else { + startNode.setX(e.getX() - posX); + startNode.setY(e.getY() - posY); + } + + repaint(); + } + + else if (key == 'e') { + int posX = e.getX() % size; + int posY = e.getY() % size; + + if (endNode == null) { + endNode = new Node(e.getX() - posX, e.getY() - posY); + } else { + endNode.setX(e.getX() - posX); + endNode.setY(e.getY() - posY); + } + + repaint(); + } + + else { + int posX = e.getX() % size; + int posY = e.getY() % size; + + barriers.add(new Node(e.getX() - posX, e.getY() - posY)); + + repaint(); + } + } + // TODO cancellare le barriere col tasto destro del mouse + } + + @Override + public void keyPressed(KeyEvent e) { + key = e.getKeyChar(); + // TODO far partire/fermare l'algoritmo con il tasto invio + } + + @Override + public void keyReleased(KeyEvent e) { + key = (char) 0; + } + + @Override + public void mousePressed(MouseEvent e) { + mapDrawing(e); + } + + @Override + public void mouseDragged(MouseEvent e) { + mapDrawing(e); + } + + @Override + public void keyTyped(KeyEvent e) {} + + @Override + public void mouseClicked(MouseEvent e) {} + + @Override + public void mouseReleased(MouseEvent e) {} + + @Override + public void mouseEntered(MouseEvent e) {} + + @Override + public void mouseExited(MouseEvent e) {} + + @Override + public void mouseMoved(MouseEvent e) {} +} diff --git a/src/main/java/Main/Node.java b/src/main/java/Main/Node.java new file mode 100644 index 0000000..479a5fb --- /dev/null +++ b/src/main/java/Main/Node.java @@ -0,0 +1,26 @@ +package Main; + +public class Node { + private int x, y; + + public Node(int x, int y) { + this.x = x; + this.y = y; + } + + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } +} diff --git a/src/test/java/Main/AppTest.java b/src/test/java/Main/AppTest.java new file mode 100644 index 0000000..4960c68 --- /dev/null +++ b/src/test/java/Main/AppTest.java @@ -0,0 +1,20 @@ +package Main; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +/** + * Unit test for simple App. + */ +public class AppTest +{ + /** + * Rigorous Test :-) + */ + @Test + public void shouldAnswerWithTrue() + { + assertTrue( true ); + } +} diff --git a/target/PathVisualizer-1.0-SNAPSHOT.jar b/target/PathVisualizer-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..406f8f9 Binary files /dev/null and b/target/PathVisualizer-1.0-SNAPSHOT.jar differ diff --git a/target/classes/Main/App.class b/target/classes/Main/App.class new file mode 100644 index 0000000..5d655f5 Binary files /dev/null and b/target/classes/Main/App.class differ diff --git a/target/classes/Main/Map.class b/target/classes/Main/Map.class new file mode 100644 index 0000000..34b60c5 Binary files /dev/null and b/target/classes/Main/Map.class differ diff --git a/target/classes/Main/Node.class b/target/classes/Main/Node.class new file mode 100644 index 0000000..8ff1fb2 Binary files /dev/null and b/target/classes/Main/Node.class differ diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..10b2555 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,4 @@ +#Created by Apache Maven 3.8.1 +groupId=Main +artifactId=PathVisualizer +version=1.0-SNAPSHOT diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..37eadb9 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,3 @@ +Main/Node.class +Main/Map.class +Main/App.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..35be478 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,3 @@ +/home/leo/Docs/Proj/PathVisualizer/src/main/java/Main/Map.java +/home/leo/Docs/Proj/PathVisualizer/src/main/java/Main/Node.java +/home/leo/Docs/Proj/PathVisualizer/src/main/java/Main/App.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..5783d8a --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst @@ -0,0 +1 @@ +Main/AppTest.class diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e6a42ce --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1 @@ +/home/leo/Docs/Proj/PathVisualizer/src/test/java/Main/AppTest.java diff --git a/target/surefire-reports/Main.AppTest.txt b/target/surefire-reports/Main.AppTest.txt new file mode 100644 index 0000000..9c021fa --- /dev/null +++ b/target/surefire-reports/Main.AppTest.txt @@ -0,0 +1,4 @@ +------------------------------------------------------------------------------- +Test set: Main.AppTest +------------------------------------------------------------------------------- +Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.028 s - in Main.AppTest diff --git a/target/surefire-reports/TEST-Main.AppTest.xml b/target/surefire-reports/TEST-Main.AppTest.xml new file mode 100644 index 0000000..afe46ad --- /dev/null +++ b/target/surefire-reports/TEST-Main.AppTest.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/target/test-classes/Main/AppTest.class b/target/test-classes/Main/AppTest.class new file mode 100644 index 0000000..6b3f4e2 Binary files /dev/null and b/target/test-classes/Main/AppTest.class differ