Procházet zdrojové kódy

Klasse Routeplanner

 een van de 5 Boebot Planner/Simulatie/GUI klassen. De methode berekenroute en ontwijk zijn vooral belangrijk voor de GUI, De methode ontwijkBoebot voor voor de boebot implementatie (dus voor Janco).
Remco před 11 roky
rodič
revize
61b1e8e86e
1 změnil soubory, kde provedl 353 přidání a 0 odebrání
  1. 353 0
      gui/Routeplanner

+ 353 - 0
gui/Routeplanner

@@ -0,0 +1,353 @@
+public class Routeplanner
+{
+    private int rotation;
+    private int x;
+    private int y;
+    private int maxx;
+    private int maxy;
+    private int ex;
+    private int ey;
+    public String coordinaten;
+    private int lengte;
+    public Routeplanner(int maxx, int maxy)
+    {
+        this.maxx = maxx;
+        this.maxy = maxy;
+        rotation = 0;
+        x = 0;
+        y = 0;
+        ex = 0;
+        ey = 0;
+    }
+
+    public void turnleft()
+    {
+        rotation = rotation - 90;
+        if (rotation < 0)
+        {
+            rotation = 270;
+        }
+    }
+
+    public void turnright()
+    {
+        rotation = rotation + 90;
+        if (rotation > 270)
+        {
+            rotation = 0;
+        }
+    }
+
+    public void keren()
+    {
+        rotation = rotation + 180;
+        if (rotation == 360)
+        {
+            rotation = 0;
+        }
+        if(rotation == 450)
+        {
+            rotation = 90;
+        }
+    }
+
+    public void vooruit()
+    {
+        if (rotation == 0 && y < maxy)
+        {
+            y ++;
+        }
+        if (rotation == 90 && x < maxx)
+        {
+            x ++;
+        }
+        if (rotation == 180 && y > 0)
+        {
+            y --;
+        }
+        if (rotation == 270 && x > 0)
+        {
+            x --;
+        }
+    }
+
+    public String geefCoordinaten()
+    {
+        coordinaten = "(" + x + "," + y + ")";
+        return coordinaten;
+    }
+
+    public String[] berekenRoute(int eindx, int eindy, int beginx, int beginy, int rotatie)
+    {
+        String[] route = new String[40];
+        int teller = 0;
+        int links = 0;
+        rotation = rotatie;
+        lengte = 0;
+        if(eindx <= maxx && eindy <= maxy && eindx >= 0 && eindy >= 0)
+        {
+            ex = eindx;
+            ey = eindy;
+        }else{
+            return route;
+        }
+        if(beginx <= maxx && beginy <= maxy && beginx >= 0 && beginy >= 0)
+        {
+            x = beginx;
+            y = beginy;
+        }else{
+            return route;
+        }
+        while(ex != x)
+        {
+            if(x < ex)
+            {
+                if(rotation == 90)
+                {
+                    vooruit();
+                    route[teller] = "vooruit";
+                    teller ++;
+                }
+                if(rotation == 0)
+                {
+                    turnright();
+                    vooruit();
+                    route[teller] = "rechtsaf";
+                    teller ++;
+                }
+                if(rotation == 270)
+                {
+                    keren();
+                    vooruit();
+                    route[teller] = "keren";
+                    teller ++;
+                }
+                if(rotation == 180)
+                {
+                    turnleft();
+                    vooruit();
+                    route[teller] = "linksaf";
+                    teller ++;
+                }
+            }
+            else
+            {
+                if(x > ex)
+                {
+                    if(rotation == 270)
+                    {
+                        vooruit();
+                        route[teller] = "vooruit";
+                        teller ++;
+                    }
+                    if(rotation == 0)
+                    {
+                        turnleft();
+                        vooruit();
+                        route[teller] = "linksaf";
+                        teller ++;
+                    }
+                    if(rotation == 90)
+                    {
+                        keren();
+                        vooruit();
+                        route[teller] = "keren";
+                        teller ++;
+                    }
+                    if(rotation == 180)
+                    {
+                        turnright();
+                        vooruit();
+                        route[teller] = "rechtsaf";
+                        teller ++;
+                    }
+                }
+            }
+        }
+        while(ey != y)
+        {
+            if(y < ey)
+            {
+                if(rotation == 0)
+                {
+                    vooruit();
+                    route[teller] = "vooruit";
+                    teller ++;
+                }
+                if(rotation == 270)
+                {
+                    turnright();
+                    vooruit();
+                    route[teller] = "rechtsaf";
+                    teller ++;
+                }
+                if(rotation == 180)
+                {
+                    keren();
+                    vooruit();
+                    route[teller] = "keren";
+                    teller ++;
+                }
+                if(rotation == 90)
+                {
+                    turnleft();
+                    vooruit();
+                    route[teller] = "linksaf";
+                    teller ++;
+                }
+            }
+            else
+            {
+                if(y > ey)
+                {
+                    if(rotation == 180)
+                    {
+                        vooruit();
+                        route[teller] = "vooruit";
+                        teller ++;
+                    }
+                    if(rotation == 90)
+                    {
+                        turnright();
+                        vooruit();
+                        route[teller] = "rechtsaf";
+                        teller ++;
+                    }
+                    if(rotation == 0)
+                    {
+                        keren();
+                        vooruit();
+                        route[teller] = "keren";
+                        teller ++;
+                    }
+                    if(rotation == 270)
+                    {
+                        turnleft();
+                        vooruit();
+                        route[teller] = "linksaf";
+                        teller ++;
+                    }
+                }
+            }
+        }
+        lengte = teller;
+        teller = 0;
+        while(teller < lengte)
+        {
+            System.out.println(route[teller]);
+            teller ++;
+        }
+        System.out.println("Planning is met succes gemaakt" + geefCoordinaten());
+        return route;
+    }
+
+    public int geefLengte()
+    {
+        return lengte;
+    }
+
+    public String[] ontwijk(int xx, int xy, int x, int y, int rotation)
+    {
+        this.x = x;
+        this.y = y;
+        String route[] = new String[4];
+        int teller = 0;
+        boolean ontwijk = false;
+        if ((ey > xy && x < maxx && x == ex) || (ex < xx && y < maxy) && ontwijk == false)
+        {
+            turnright();
+            vooruit();
+            route[teller] = "rechtsaf";
+            teller ++;
+            turnleft();
+            vooruit();
+            route[teller] = "linksaf";
+            teller ++;
+            vooruit();
+            route[teller] = "vooruit";
+            teller ++;
+            turnleft();
+            vooruit();
+            route[teller] = "linksaf"; 
+            teller ++;
+            ontwijk = true;
+        }
+        if (((ex > xx && y < maxy) || (ey < xy && x < maxx)) && ontwijk == false)
+        {
+            turnleft();
+            vooruit();
+            route[teller] = "linksaf";
+            teller ++;
+            turnright();
+            vooruit();
+            route[teller] = "rechtsaf";
+            teller ++;
+            vooruit();
+            route[teller] = "vooruit";
+            teller ++;
+            turnright();
+            vooruit();
+            route[teller] = "rechtsaf"; 
+            teller ++;
+            ontwijk = true;
+        }
+        if (ex == xx && ex == xy)
+        {
+            System.out.println("ERROR: obstakel op eindstation");
+        }
+        lengte = teller;
+        teller = 0;
+        while(teller < lengte)
+        {
+            System.out.println(route[teller]);
+            teller ++;
+        }
+        return route;
+    }
+    public char[] ontwijkBoebot(int xx, int xy, int x, int y, int rotation)
+    {
+        this.x = x;
+        this.y = y;
+        char route[] = new char[4];
+        int teller = 0;
+        boolean ontwijk = false;
+        if ((ey > xy && x < maxx && x == ex) || (ex < xx && y < maxy) && ontwijk == false)
+        {
+            turnright();
+            vooruit();
+            route[teller] = 'r';
+            teller ++;
+            turnleft();
+            vooruit();
+            route[teller] = 'l';
+            teller ++;
+            turnleft();
+            vooruit();
+            route[teller] = 'l'; 
+            teller ++;
+            ontwijk = true;
+        }
+        if (((ex > xx && y < maxy) || (ey < xy && x < maxx)) && ontwijk == false)
+        {
+            turnleft();
+            vooruit();
+            route[teller] = 'l';
+            teller ++;
+            turnright();
+            vooruit();
+            route[teller] = 'r';
+            teller ++;
+            turnright();
+            vooruit();
+            route[teller] = 'r'; 
+            teller ++;
+            ontwijk = true;
+        }
+        if (ex == xx && ex == xy)
+        {
+            System.out.println("ERROR: obstakel op eindstation");
+        }
+        teller = 0;
+        return route;
+    }
+}