Skip to content
Snippets Groups Projects
Select Git revision
  • 8932dc36db9794fa126ff196840ec2adb831fc9c
  • master default protected
  • pymilter-1.0.4
  • pymilter-1.0.3
  • pymilter-1.0.2
  • pymilter-1.0.1
  • pymilter-1_0
  • milter-0_8_18
  • pymilter-0_9_8
  • pymilter-0_9_7
  • pymilter-0_9_6
  • pymilter-0_9_5
  • pymilter-0_9_4
  • pymilter-0_9_2
  • pymilter-0_9_1
  • pymilter-0_9_0
  • pymilter-0_8_12
  • pymilter-0_8_11
  • pymilter-0_8_10
  • pymilter-0_8_9
  • milter-0_8_8
  • milter-0_8_7
22 results

testbms.py

Blame
  • ParallelPathfinder.java 2.52 KiB
    package algorithm;
    
    import parallel.EagerWorkingThread;
    import parallel.SharedRessources;
    import structs.Vec3;
    
    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
                    .getInstance().add(new Explorer(destX + 1, destY, 1, Explorer.Direction.East));
            SharedRessources
                    .getInstance().add(new Explorer(destX, destY - 1, 1, Explorer.Direction.North));
            SharedRessources
                    .getInstance().add(new Explorer(destX, destY + 1, 1, Explorer.Direction.South));
    
    
            synchronized (SharedRessources.getInstance().getSignalingObject()) {
                while (!SharedRessources.getInstance().done()) {
                    try {
                        SharedRessources.getInstance().getSignalingObject().wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        public ArrayList<Point> calculatePath(int startX, int startY, int destX, int destY) {
    
            if (destX != lastDestX || destY != lastDestY)
                flood(destX, destY);
    
            ArrayList<Point> path
                    = new ArrayList<>();
    
            int x = startX;
            int y = startY;
    
            while (x != destX || y != destY) {
    
                path.add(new Point(x, y));
    
                Vec3 currentDir
                        =
                        SharedRessources.getInstance().getVisitMatrix()[x + y * SharedRessources.getInstance().getWidth()];
    
                int dx = (int) currentDir.getX();
                int dy = (int) currentDir.getY();
    
                if (dx == 0 && dy == 0)
                    return null;
    
                x += dx;
                y += dy;
            }
    
    
            return path;
    
        }
    
        public void draw(Graphics g) {
            for (int j = 0; j < SharedRessources.getInstance().getHeight(); j++) {
                for (int i = 0; i < SharedRessources.getInstance().getWidth(); i++) {
                    boolean b =
                            SharedRessources.getInstance().getWallMatrix()[i + j * SharedRessources.getInstance().getWidth()];
                    if (b) {
                        g.setColor(Color.blue);
                        g.fillRect(i * 1, j * 1, 1, 1);
                    }
                }
            }
        }
    
    
    }