فهرست منبع

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 11 سال پیش
والد
کامیت
61b1e8e86e
1فایلهای تغییر یافته به همراه353 افزوده شده و 0 حذف شده
  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;
+    }
+}