Skip to content
Snippets Groups Projects
Select Git revision
  • fc056f2419a16f6c5baa511f2081a879f9b4c257
  • master default
  • v0.52.5
  • v0.52.4
  • v0.52.3
  • v0.52.2
  • v0.52.1
  • v0.52.0
  • v0.51.0
  • v0.50.0
  • v0.49.0
11 results

init.sls

Blame
  • WallBasedPathfinder.java 3.21 KiB
    package approach3.parallel;
    
    import approach3.parallel.operations.Trace;
    import structs.Int3;
    import structs.Vec3;
    
    import java.awt.*;
    import java.util.ArrayList;
    
    public class WallBasedPathfinder {
    
    
        public void find() {
    
            int beginX = SharedRessources.getInstance().getStart().x;
            int beginY = SharedRessources.getInstance().getStart().y;
    
            int endX = SharedRessources.getInstance().getEnd().x;
            int endY = SharedRessources.getInstance().getEnd().y;
    
    
            SharedRessources
                    .getInstance()
                    .getExecutor()
                    .execute(new Trace(endX, endY, beginX, beginY, 0));
    
    
        }
    
    
        ArrayList<Point> debug = new ArrayList<>();
    
    
        public ArrayList<Point> calculatePath(int startX, int startY, int destX, int destY) {
    
            int x = startX;
            int y = startY;
    
            while (x != destX || y != destY) {
    
                debug.add(new Point(x, y));
    
                Int3 currentDir
                        =
                        SharedRessources.getInstance().getData(x, y);
    
                int dx = (int) currentDir.getX();
                int dy = (int) currentDir.getY();
    
                if (dx == 0 && dy == 0)
                    break;
    
                x += dx;
                y += dy;
    
    
            }
    
            System.out.println("Done.");
    
            return debug;
        }
    
    
        public void draw(Graphics g) {
    
    
            for (int j = 0; j < SharedRessources.getInstance().getHeight(); j++) {
                for (int i = 0; i < SharedRessources.getInstance().getWidth(); i++) {
                    if (SharedRessources.getInstance().isWall(i, j)) {
                        g.setColor(Color.blue);
                        g.fillRect(i * 5, j * 5, 5, 5);
                    } else {
                        int dx = (int) SharedRessources.getInstance().getData(i, j).getX() * 5;
                        int dy = (int) SharedRessources.getInstance().getData(i, j).getY() * 5;
    
                        if (dx != 0 || dy != 0) {
                            int green = SharedRessources.getInstance().getStep(i, j);
                            if (green >= 255)
                                green = 255;
                            Color color
                                    = new Color(0, 255, 0);
    
                            g.setColor(color);
    
                            g.fillRect(i * 5, j * 5, 5, 5);
    
                            g.setColor(Color.red);
                            g.drawLine(i * 5, j * 5, i * 5 + dx, j * 5 + dy);
    
    
                        } else {
                            g.setColor(Color.black);
                            g.fillRect(i * 5, j * 5, 5, 5);
                        }
                    }
                }
            }
    
            if (SharedRessources.getInstance().getEnd() == null || SharedRessources.getInstance().getStart() == null)
                return;
    
    
            g.setColor(Color.yellow);
            g.fillRect(SharedRessources.getInstance().getEnd().x * 5,
                    SharedRessources.getInstance().getEnd().y * 5, 5
                    , 5);
    
            g.setColor(Color.red);
            g.fillRect(SharedRessources.getInstance().getStart().x * 5,
                    SharedRessources.getInstance().getStart().y * 5
                    , 5, 5);
    
    
            g.setColor(Color.red);
    
            for (int i = 0; i < debug.size(); i++)
                g.fillRect(debug.get(i).x * 5, debug.get(i).y * 5, 5, 5);
    
        }
    }