Explorar o código

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 %!s(int64=11) %!d(string=hai) anos
pai
achega
61b1e8e86e
Modificáronse 1 ficheiros con 353 adicións e 0 borrados
  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;
+    }
+}