nur 1 Min später

:
was kannst du da debuggt haben?
schau dir einfach an was dein Algorithmus tut, alles liegt klar vor dir,
da wäre z.B.
> // check if the filed is accessible or already in the closed list
> if (!this.map.isAccessible(temp) || this.isInClosedList(temp)) break;
hier brichst du die Schleife ab, zumindest die innere der doppelten Schleife,
andere Knoten mit höherem x,y werden nicht mehr überprüft,
richtig ist dagegen ein continue, der Rest muss noch dran kommen,
mit einfachen Debugging 'starte von Punkt xy aus' (hast du), 'prüfe nun Punkt xy' (hast du nicht) würde sofort auffallen,
wenn ein Punkt ohne guten Grund nicht überprüft wird,
deshalb kommst du auf der Testkarte nicht unten um die Ecke
--------
zwei weitere Fehler:
// check if this item is better
AStarNode fromOpenList = this.getNodeFromOpenList(temp);
if (n.getF() < fromOpenList.getF()) {
fromOpenList.getF() ist der alte geschätzte Gesamtweg über fromOpenList,
diesem Wert darfst du nicht n.getF() entgegen setzen, sondern ein neu berechnetes fromOpenList.getF() WENN n der Parent von fromOpenList wäre
mal ein etwas anschaulicheres Beispiel:
von Hamburg aus is Ziel München, weitere Zwischenknoten sind Berlin und Stuttgart, die Gitterstruktur dürfte ungefähr klar sein
von Hamburg aus kommten Stuttgart und Berlin in die Open-Liste,
als nächstes wird Stuttgart betrachtet, und von Stuttgart aus schauen wir mal nach dem schon sich in der Open-Liste befindlichen Berlin
nun darfst du nicht den geschätzen Weg Hamburg-Stuttgart-München mit Hamburg-Berlin-München vergleichen um Stuttgart als Parent zu setzen,
sondern du musst den geschätzen Weg Hamburg-Stuttgart-Berlin-München mit Hamburg-Berlin-München vergleichen, denn falls du Stuttgart
als neuen Parent von Berlin setzt, wäre der mögliche Endweg schließlich auch Hamburg-Stuttgart-Berlin-München
--------
> while (!this.isInClosedList(t) || !this.open.isEmpty()) {
das oder bedeutet: führe die Schleife fort, solange eine der beiden Bedingungen erfüllt ist,
solange es noch offene Knoten gibt wird also ewig weitergesucht, selbst wenn der Zielknoten schon gefunden wurde,
das muss ein 'und' rein
------
edit:
ob am Ende alles stimmt, z.B. die richtige Verknüpfung der Knoten, habe ich nicht genau angeschaut
edit2:
ich empfehle noch
for (int i = 0; i < this.map.length; i++) {
for (int j = 0; j < this.map
.length; j++) {
g.drawString(""+j+"/"+i,j*80+50, i*80+50);
}
}
am Ende der paint-Methode, damit sich die Felder einfacher wiederfinden lassen