A*-Pfad malen

Eichelhäer

Bekanntes Mitglied
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:
Code:
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

Top Contributor
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

Bekanntes Mitglied
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.:(
 

Eichelhäer

Bekanntes Mitglied
Code:
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?
 

Ähnliche Java Themen

Neue Themen


Oben