From 82beabdc4ce7cff5a4d565f1ec0c6d7be6184e10 Mon Sep 17 00:00:00 2001 From: NET-D3v3l0p3r <3r0rxx@gmail.com> Date: Thu, 22 Apr 2021 03:48:57 +0200 Subject: [PATCH] Input ready --- src/algorithm/ParallelPathfinder.java | 15 +++++++++- src/window/Game.java | 40 +++++++++++++++++++++++++++ src/window/MainWindow.java | 12 ++++++-- 3 files changed, 64 insertions(+), 3 deletions(-) diff --git a/src/algorithm/ParallelPathfinder.java b/src/algorithm/ParallelPathfinder.java index e98b076..0511c78 100644 --- a/src/algorithm/ParallelPathfinder.java +++ b/src/algorithm/ParallelPathfinder.java @@ -8,7 +8,17 @@ import java.awt.*; import java.util.ArrayList; public class ParallelPathfinder { + + private int lastDestX; + private int lastDestY; + private void flood(int destX, int destY) { + + lastDestX = destX; + lastDestY = destY; + + System.out.println("[*] Flooding..."); + SharedRessources .getInstance().add(new Explorer(destX - 1, destY, 1, Explorer.Direction.West)); SharedRessources @@ -31,7 +41,9 @@ public class ParallelPathfinder { } public ArrayList<Point> calculatePath(int startX, int startY, int destX, int destY) { - flood(destX, destY); + + if (destX != lastDestX || destY != lastDestY) + flood(destX, destY); ArrayList<Point> path = new ArrayList<>(); @@ -59,6 +71,7 @@ public class ParallelPathfinder { return path; + } public void draw(Graphics g) { diff --git a/src/window/Game.java b/src/window/Game.java index 6a328a3..8adbaa3 100644 --- a/src/window/Game.java +++ b/src/window/Game.java @@ -4,6 +4,8 @@ import javax.swing.*; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; public abstract class Game extends JFrame { @@ -13,12 +15,16 @@ public abstract class Game extends JFrame { private boolean running; private boolean[] pressedKeyMap; + private boolean[] pressedMouseKeyMap; + + private int mX, mY; public Game(String title, int w, int h) { super(title); this.setSize(w, h); pressedKeyMap = new boolean[1024]; + pressedMouseKeyMap = new boolean[4]; this.windowThread = new Thread(() -> { loadGame(); @@ -55,6 +61,24 @@ public abstract class Game extends JFrame { pressedKeyMap[e.getKeyCode()] = false; } + + }); + + this.addMouseListener(new MouseAdapter() { + @Override + public void mousePressed(MouseEvent e) { + super.mousePressed(e); + mX = e.getX(); + mY = e.getY(); + pressedMouseKeyMap[e.getButton()] = true; + } + + @Override + public void mouseReleased(MouseEvent e) { + super.mouseReleased(e); + pressedMouseKeyMap[e.getButton()] = false; + } + }); this.setDefaultCloseOperation(EXIT_ON_CLOSE); @@ -70,6 +94,22 @@ public abstract class Game extends JFrame { return !isKeyDown(key); } + public boolean isMouseKeyDown(int key) { + return pressedMouseKeyMap[key]; + } + + public boolean isMouseKeyUp(int key) { + return !isMouseKeyDown(key); + } + + public int getMouseX() { + return mX; + } + + public int getMouseY() { + return mY; + } + public final void run() { this.setVisible(true); this.running = true; diff --git a/src/window/MainWindow.java b/src/window/MainWindow.java index 080b42d..97adbb7 100644 --- a/src/window/MainWindow.java +++ b/src/window/MainWindow.java @@ -7,6 +7,7 @@ import parallel.SharedRessources; import javax.imageio.ImageIO; import java.awt.*; import java.awt.event.KeyEvent; +import java.awt.event.MouseEvent; import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -33,12 +34,19 @@ public class MainWindow extends Game { = new ParallelPathfinder(); } + private boolean pressed; + @Override public void updateGame() { - if (isKeyDown(KeyEvent.VK_ENTER)) - pts = parallelPathfinder.calculatePath(8, 5, 1590, 800); + if (isMouseKeyDown(MouseEvent.BUTTON1) && !pressed) { + pts = + parallelPathfinder.calculatePath(this.getMouseX(), this.getMouseY(), 1590, 800); + pressed = true; + } + if (isMouseKeyUp(MouseEvent.BUTTON1)) + pressed = false; } @Override -- GitLab