瀏覽代碼

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;
+    }
+}