![]() |
DelphiX + A*
Hi,
hätte jemand eine Idee, wie man DelphiX mit A* verwenden könnte? Ich möchte ein Sprite von 0,0 nach 5,5 (beispiel) schicken und dabei soll es den kürzesten weg nehmen. Mein Problem ist nur, das sich das ganze spielfeld mit Sprites aufgebaut wird. Also keine Bitmaps etc. Bin für jede Idee dankbar^^.. *MFG* Manu |
Re: DelphiX + A*
Für A* brauchst du eine Matrix. Die kleinste Matrix wäre das Pixelformat. Damit musst du dann arbeiten.
|
Re: DelphiX + A*
und wie genau ???
ich habe jetzt z.b. so eine map:
Delphi-Quellcode:
Map:array of TMAp;
TMap = record
x,y,typ,tex:Integer; begabar:Boolean; end; und nun möchte ich gerne ein objekt von 6,7 nach 9,10 bewegen, wie geht das ??? kannst du evtl, ein kleines beispiel erstellen ??? |
Re: DelphiX + A*
Ich versteh dein Problem nicht. :gruebel:
Du brauchst doch den A* Algorithmus nur praktisch anwenden. |
Re: DelphiX + A*
Hi Nonsense,
könntest du uns mal ein beispiel machen? |
Re: DelphiX + A*
Du wirst doch sicher schon mit A* gearbeitet haben, bzw. in der Theorie kennen (woraus folgt, dass die praktische Umsetzung mit halbwegs passablen Object Pascal Kenntnissen kein Problem ist)?
Bitte sag mir mal, wo _konkret_ Dein Problem ist. Ich kann Dir überhaupt nicht folgen. |
Re: DelphiX + A*
Hi Nonsense,
mein Problem ist, das ich nicht weiß wie ich A* verwende. Ich hab mit zwar schon die Beispiele angeguckt, bekomme sie aber nicht auf DelphiX übertragen. |
Re: DelphiX + A*
Zitat:
Du sagts, du willst den kürzesten weg. A* ist allerdings auf den güstigsten weg ausgelegt. Ist zwar in den meisten fällen das gleiche, aber wenn man kosten (zB. für hügel oder so) verteilt dann eben nicht. Will man tatsächlich die kürzeste strecke, dann kann man die heuristik überbewerten, sodass kürzere strecken auch günstiger werden. Dies ist im übrigen auch eine sehr gute optimierungs möglichkeit, da sich so die anzahl der knoten sehr stark verringert. Viel spass! PS: wenns brennt und garnicht geht, dann kann ich euch ein 'quick & dirty' beispeil geben. |
Re: DelphiX + A*
A* *schüttel*, kommt mir bekannt vor. Da ich iM nicht an meine Unterlagen dazu komme, versuche ich mal mein Gehirn zu strapazieren:
A* soll den kürzesten Weg zwischen zwei Punkten ermitteln. Bei den Punkten die dazwischen liegen, braucht man die gültigen Verbindungen zwischen diesen. Die Verbindungen (= Kanten) bekommen Gewichte (oder die Punkte selber?). Vom Startpunkt wird der Punkt gewählt, der mit dem geringsten Gewicht zu erreichen ist. Die anderen möglichen Punkte werden in eine Liste eingetragen. Dies wird solange wiederholt bis man am Zielknoten ist. Dabei addieren sich die Gewichte für alle Verbindungen (= Kosten). Ist in der Liste ein Punkt, der mit weniger Kosten zu erreichen ist als einer vom aktuellen, wird dieser Punt gewählt. Man muss zusätzlich sicherstellen, dass wenn man auf zwei Wegen zu einem Zwischenpunkt kommt, dass derjenige mit den geringeren Kosten gewählt wird. Das war erstmal alles, was mir dazu eingefallen ist. MfG wZ |
Re: DelphiX + A*
verstehe ich nicht ganz.... ich habe schon einige beispiele gesehen auch für delphiX aber ich verstehe sie leider nicht ganz.... wenn ich jetzt so eine map habe:
Delphi-Quellcode:
TMap = record
Typ, tex:Integer; Begebear:Boolean; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz