Wertepaar in LinkedList/PriorityQueue speichern

Sophia1

Neues Mitglied
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!
 

SilverClaw

Aktives Mitglied
Also ich weiß nicht, ob du das hier schon gelsen hast, aber ich and das recht gut erklärt: A* Pathfinding for Beginners

Wenn dein einziges Problem darin besteht, zwei Koordinaten zu speichern, dann mach doch einfach eine LinkedList von Point - Objekten. Ein Point besteht schließlich aus einer x und einer y - Koordinate, also genau das, was du brauchst. Ansonsten benutzt du einfach zwei Listen und läufst sie parallel durch.
Das wären so spontan die einfachsten Ideen. Ob die von der Geschwindgkeit optimal sind, kann ich nicht garantieren, aber für ein Schul- (und auch die meisten Uni-) Projekt wird es darauf ja nicht unbedingt ankommen oder? :D
 

Sophia1

Neues Mitglied
Also es geht darum, dass ich in einer Liste immer das Feld + den dazugehörigen Wert speichern will.
Ich will dann später immer auf das Feld mit dem kleinsten Wert zugreifen können.
Ich muss also x-Koordinate, y-Koordinate und den Funktionswert zusammen speichern und will nach dem Funktionswert sortieren.
Wie mache ich das?
 

SilverClaw

Aktives Mitglied
Am besten machst du dir da eine Klasse, die comparable implementiert.
Sowas wie
class Field implements Comprable {
int x, y, value;
// und so weiter
}

und die Klasse speichert dann die Koordinaten und den Wert und lässt sich auch effizient sortieren.
Wie man compareTo() am besten überschreibt kannst du notfalls kurz googeln, ich will es nicht unbedingt nochmal erklären, falls du es schon kennst. ;)
(wobei es nicht zwangsläufig nötig wäre, man kann auch direkt nach getValue() sortieren).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Wertepaar in relulärem Ausdruck Allgemeine Java-Themen 15
M Laufzeit LinkedList Allgemeine Java-Themen 9
O Werte einer Generic LinkedList zusammenrechenen Allgemeine Java-Themen 14
M Delete bei sortierter LinkedList Allgemeine Java-Themen 5
M ArrayList oder LinkedList Allgemeine Java-Themen 10
M verbesserte Laufzeit bei LinkedList Allgemeine Java-Themen 7
L Unterschied zwischen List und LinkedList implementierung? Allgemeine Java-Themen 15
K Gespeicherte Daten von einer LinkedList auf vier LinkedList verteilen Allgemeine Java-Themen 6
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
S LinkedList Error Allgemeine Java-Themen 4
T Menge an Elementen aus einer LinkedList Allgemeine Java-Themen 6
L Java Slick2D stürzt ab- Zu viel auf einmal? (LinkedList) Allgemeine Java-Themen 7
F LinkedList Allgemeine Java-Themen 3
R LinkedList und Threads: Strukturprobleme bez. löschen von Elementen Allgemeine Java-Themen 3
R LinkedList und Threads - welche Methode ist besser? Allgemeine Java-Themen 2
E Threads linkedlist/multi-thread problem Allgemeine Java-Themen 3
H LinkedList<LinkedList<String>> nach ArrayList<ArrayList<String>> ? Allgemeine Java-Themen 9
C Threads Zwei Threads greifen auf LinkedList zu. Allgemeine Java-Themen 12
B Datentypen JMF: Player LinkedList sinnvoll? ca 30 kurze Sounddateien Allgemeine Java-Themen 3
C LinkedList und ArrayList in HashMap Allgemeine Java-Themen 4
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
C Wie kann ich ein LinkedList verbinden ? Allgemeine Java-Themen 4
R Intervall-Implementierung mit selbstgebauter LinkedList Allgemeine Java-Themen 7
A LinkedList Auslesen und Objekt Löschen Allgemeine Java-Themen 4
nabla LinkedList removeRange ineffizient? Allgemeine Java-Themen 4
G extend LinkedList für Matrosenkiller ;-) Allgemeine Java-Themen 9
R ArrayList, LinkedList oder Set Allgemeine Java-Themen 9
Daniel_L LinkedList vom Typ Object-Array? Allgemeine Java-Themen 4
T Problem mit LinkedList Allgemeine Java-Themen 2
D indexOutOfBoundsException bei LinkedList Allgemeine Java-Themen 10
T zirkuläre LinkedList Allgemeine Java-Themen 8
Caracasa [Threads] Gleichzeitiger Zugriff auf eine LinkedList Allgemeine Java-Themen 9
D LinkedList anhand einer long-Variable der Objekte sortieren Allgemeine Java-Themen 5
N ArrayList oder LinkedList? Allgemeine Java-Themen 15
M Rekursive Ausgabe einer linkedList Allgemeine Java-Themen 8
J LinkedList und Assoziaziotenen Allgemeine Java-Themen 8
F Synchronisation + Vector/ArrayList/LinkedList Allgemeine Java-Themen 7
C LinkedList Fragen Allgemeine Java-Themen 7
H Daten aus LinkedList ausgeben ! Allgemeine Java-Themen 9
H [LinkedList] Sortieren durch MergeSort Allgemeine Java-Themen 3
S Probleme mit LinkedList und Label mit gridbagLayout Allgemeine Java-Themen 2
M IOException bei save und load in LinkedList Allgemeine Java-Themen 4
N Objekte in LinkedList "umsortieren" Allgemeine Java-Themen 4
C LinkedList Exception abfangen Allgemeine Java-Themen 8
Z LinkedList speichern Allgemeine Java-Themen 2
N Element aus LinkedList löschen Allgemeine Java-Themen 2
Z löschen aus Linkedlist Allgemeine Java-Themen 12
G LinkedList sortieren Allgemeine Java-Themen 3
C Collection, LinkedList, Elemente Allgemeine Java-Themen 4
K PriorityQueue mit Gewicht Allgemeine Java-Themen 3
_dp Datentypen PriorityQueue sortiert falsch? Allgemeine Java-Themen 6
D PriorityQueue selbst implementieren Allgemeine Java-Themen 15

Ähnliche Java Themen

Neue Themen


Oben