A* Verbesserungen

Federhalter

Mitglied
Hallo, ich versuche einen AStar Algorithmus zu implementieren für einen Warcraft 2 Klon. Nun läuft das Ding ganz normal, wenn ich irgendwo hin klicke laufen Bauern, Ranger etc zu dem tile auf das ich klicke. Das Problem ist nun wenn ich Holz fällen möchte ( und ich habe das holztile als obstacle implementiert) dann sollte die einheit egal wie groß der Wald ist den kürzesten weg von ihr aus zum nächstgelegenen Holzbestand finden und abholzen. Allerdings weiss ich nicht wovon ich das abhängig machen soll.
Ich hab versucht die h - kosten zu vergleichen habe aber nur zum teil richtige ergebnisse erhalten und abhängig davon den nächstgelegenen Knoten ("closest") zu erhalten klappt aber iwie nicht. Vielleicht weiss jmd rat:
Hier der relevante code:

Code:
for(Node neighbour : current.neighbours) {
                
                double tmpG = current.g + heuristic(current,neighbour);
                
                if ((openList.contains(neighbour) || closedList.contains(neighbour)) && tmpG >= neighbour.g) {
                    continue;
                }
                
                double tmpH = heuristic(closest,target);
                
                if (openList.contains(neighbour) && tmpH >= neighbour.h) {
                    closest = neighbour.parent; // closest ist initialisiert als der startknoten
                }
                
                if(!neighbour.obstacle) {
                    neighbour.g = tmpG;
                    neighbour.h = heuristic(neighbour,target);
                    neighbour.f = neighbour.g + neighbour.h;
                    neighbour.parent = current;
                    openList.add(neighbour);
                }
            }

Ich bekomme zwar teilweise richtige Ergebnisse, aber auch falsche bei denen der closest Knoten um ein paar tile versetzt gesetzt wird.
Gruß Federhalter
 
Zurück