Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C#-Quelltext |
|
1 2 3 4 5 6 7 |
public static List<Tile> findPath(int startx,int starty,int endx,int endy){ for(int i = 0; i < width; i++){ for(int j = 0;j < height;j++){ tiles[i][j] = new Tile(i,j,size,size,obstacles[i][j],false); } } |
Hast du denn auch diesen Teil entfernt? Denn das ist eine der teuresten und zugleich unnötigsten Codestelle, die du präsentiert hast. Diese Tiles musst du nicht bei jeder Pfadsuche erstellen, da sich deine Tiles ja nicht mehr ändern.
Ich gehe davon aus, dass du eine Methode/Funktion/Codestelle hast in der Benutzereingaben entgegengenommen und verarbeitet werden, in der du das machen kannst.
Also ich berechne jetzt die findPath - Methode in der Hauptupdate und übergebe den Pfad dann der Unit-update und verändere die Parameter der findPath - Methode in der Hauptupdate so, dass diese auf die Maus reagieren kann. Und es funzt perfekt.
Das einzige ist jetzt noch die Initialisierung von startx bzw. starty, damit die Einheit interaktiv reagieren kann.
Wie ordne ich das TreeSet anhand der f-Kosten durch Überschreiben der compareTo - Methode?
Quellcode |
|
1 2 3 4 5 6 7 |
class NodeComparator implements Comparator<Node>{ @Override public int compare(Node n1, Node n2) { return n1.f - n2.f; } } |
Quellcode |
|
1 2 3 4 5 |
public int heuristic(Node A,Node B) { int dx = Math.abs(A.x - B.x); int dy = Math.abs(A.y - B.y); return dx + dy; } |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Werbeanzeige