# A*-Pfad malen



## Eichelhäer (5. Mrz 2017)

Hallo nochmal,

ich versuche fieberhaft mir den Pfad den ich mit A* berechnet habe als Linie anzeigen zu lassen und bringe es nicht fertig. Das Problem ist dabei, dass die drawLine()-Methode einfach eine Line zwischen zwei Punkten zeichnet. Jetzt habe ich aber mehrere Punkte und habe mir gedacht wie die API es dokumentiert, ich nehm einfach eine Polyline, aber bei mir wird nix angezeigt.
Hier mal die Schleife:

```
if(path!=null){
            for(int i=0;i<path.size();i++){
               
                xp = path.get(i).x*w + w/2;
                yp = path.get(i).y*h + h/2;
                xpoints = new int[]{xp};
                ypoints = new int[]{yp};
                g.drawPolyline(xpoints,ypoints,xpoints.length);
               
            }
        }
```

Keine Ahnung warum da nix auf dem Bildschirm erscheint.
Vielleicht weiß hier jemand Rat.

Gruß Eichelhäer


----------



## JCODA (5. Mrz 2017)

Momentan nimmst du ganz viele Arrays, die alle nur eins lang sind. So funktioniert drawPolyline nicht.
Erstelle zwei Arrays für die x,y-Koordinaten mit Länge des Pfades und rufe nach der Schleife einmal drawPolyline auf.


----------



## Eichelhäer (5. Mrz 2017)

Ok hab ich gemacht jetzt wird was angezeigt.
Allerdings verbindet Polyline die einzelnen Punkte nicht miteinander, sondern zeichnet vom Ursprund zu jedem einzelnen Punkt eine Linie.
Was mache ich dann noch falsch. Hab schon soviel versucht.


----------



## JCODA (5. Mrz 2017)

Dann zeig doch Code! Was erwartest du von mir/uns?


----------



## Eichelhäer (5. Mrz 2017)

```
xpoints = new int[path.size()];
        ypoints = new int[path.size()];
       
        if(path!=null){
           
            for(int i=0;i<path.size();i++){
                    xp = path.get(i).x*w + w/2;
                    yp = path.get(i).y*h + h/2;
                   
                    xpoints[i] = xp;
                    ypoints[i] = yp;
                    g.drawPolyline(xpoints,ypoints,xpoints.length);
                    System.out.println(xpoints[i]);
               
            }
        }
```

Das ist der Code. Wieso zeichnet Polyline nicht nur die Verbindungslinie zwischen den einzelnen Punkten, sondern auch noch zusätzlich vom Punkt 0,0 zu jedem einzelnen Punkt der Liste eine Linie?


----------



## JCODA (5. Mrz 2017)

Ich zitiere mal, was ich oben geschrieben habe:


JCODA hat gesagt.:


> ... und rufe *nach* der Schleife *einmal *drawPolyline auf.



Du rufst drawPolyline mehrfach auf. Insbesondere, wenn das Array noch nicht vollständig gefüllt ist. D.h. am Anfang steht noch  0,0 in den Arrays.


----------



## Eichelhäer (5. Mrz 2017)

Vielen vielen Dank.
Du hast meinen Kopf vorm explodieren gerettet. XD


----------

