diff --git a/src/algorithm/ParallelPathfinder.java b/src/algorithm/ParallelPathfinder.java
index e98b076a64264d44d6178771ee0d6790fd88834d..0511c78a042bd0bc57e1ef613bd67a0a90eb1efd 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 6a328a32aaf765fe0b7bf5485e35ca48449c1e42..8adbaa3190b4b7e7c49ca22c1da07c5a2732e5f2 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 080b42ddba0d84a7ef490ff8f8a09dc8b8fbddcc..97adbb75fbd6ae26cdceb34a0a9a53df9452aa16 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