Hallo!
Ich muss für die Uni ein Spiel programmieren. Ich bin zuständig für die künstliche Intelligenz und brauche dafür den A*-Algorithmus.
Ich habe also ein Spielfeld, das auf einem Array basiert. Der A*-Algorithmus soll dafür sorgen, dass die Monster automatisch den kürzesten Weg zum Spieler laufen.
Überall im Internet steht, dass man die markierten Knoten im A*-Algo in einer "openlist" Speichern soll. Diese kann als priority Queue oder LinkedList implementiert werden. Der Knoten (bzw das Array Feld) mit dem geringsten f-Wert in der openlist soll dann ausgegeben werden.
Hier liegt mein Problem: Wie kann ich ein Wertepaar (Koordinaten des Arrayfeldes, auf dem mein Monster steht + zugehöriger Wert der f-Funktion des Feldes) in einer LinkedList bzw Priority Queue speichern?
Meines Wissens nach können in einer LinkedList nur einzelne Werte gespeichert werden. Ein Kommilitone von mir hat mir eine Integer PriorityQueue als Heap programmiert, jedoch weiß ich hier auch nicht, wie ich das Wertepaar dort speichern soll, da auch hier nur einzelne int Werte benutzt werden können.
Kennt sich jemand mit dem A* Algorithmus aus und kann mir helfen? Ich weiß echt nicht weiter!
Ich muss für die Uni ein Spiel programmieren. Ich bin zuständig für die künstliche Intelligenz und brauche dafür den A*-Algorithmus.
Ich habe also ein Spielfeld, das auf einem Array basiert. Der A*-Algorithmus soll dafür sorgen, dass die Monster automatisch den kürzesten Weg zum Spieler laufen.
Überall im Internet steht, dass man die markierten Knoten im A*-Algo in einer "openlist" Speichern soll. Diese kann als priority Queue oder LinkedList implementiert werden. Der Knoten (bzw das Array Feld) mit dem geringsten f-Wert in der openlist soll dann ausgegeben werden.
Hier liegt mein Problem: Wie kann ich ein Wertepaar (Koordinaten des Arrayfeldes, auf dem mein Monster steht + zugehöriger Wert der f-Funktion des Feldes) in einer LinkedList bzw Priority Queue speichern?
Meines Wissens nach können in einer LinkedList nur einzelne Werte gespeichert werden. Ein Kommilitone von mir hat mir eine Integer PriorityQueue als Heap programmiert, jedoch weiß ich hier auch nicht, wie ich das Wertepaar dort speichern soll, da auch hier nur einzelne int Werte benutzt werden können.
Kennt sich jemand mit dem A* Algorithmus aus und kann mir helfen? Ich weiß echt nicht weiter!