Pathfinding: Knoten - Ursprungsknoten - Werte übergeben?
Übersicht

![]() |
TravisBetreff: Pathfinding: Knoten - Ursprungsknoten - Werte übergeben? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zur Zeit versuche ich mich im Pathfinding mittels BlitzMax. Leider muss ich wieder mit den Unterschieden zu BB kämpfen.
Wenn ich für mein Pathfinding ein Type für die Knoten habe, wie übergebe ich einem neuen Knoten dann seinen Ursprungsknoten? |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Per Self würde ich sagen.
Also in einer methode des übergeordneten knotens einfach: Code: [AUSKLAPPEN] Unterknoten = new knoten unterknoten.uebergeordneter = self oder halt so ähnlich. |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man muß nicht mit Types arbeiten... Das geht auch mit Arrays - das wäre sogar noch schneller... und zwar aus 3 Gründen:
1) der overhead bei types ist viel größer als bei arrays 2) die dauernde neuerstellung von types ist langsamer - als die erstellung von 1 array auf einen schlag. 3) der zugriff auf array müsste schneller sein... zusätzlich braucht man aber eine liste mit knoten, welche noch "geöffnet" sind |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
TheShadow hat Folgendes geschrieben: Man muß nicht mit Types arbeiten... Das geht auch mit Arrays - das wäre sogar noch schneller... und zwar aus 3 Gründen:
1) der overhead bei types ist viel größer als bei arrays 2) die dauernde neuerstellung von types ist langsamer - als die erstellung von 1 array auf einen schlag. 3) der zugriff auf array müsste schneller sein... zusätzlich braucht man aber eine liste mit knoten, welche noch "geöffnet" sind Ich würd mit Types arbeiten. Logischer, leichter, verständlicher, handlicher. Arrays wären schneller wenn du 2 000 000 Knoten hättest. |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
klaro ist es bisschen einfacher. aber arrays sind normal immer schneller - nicht nur bei 2 Mio tiles.
man hat aber so oder so ein array. dann erzeugt man ein zusatzaray: 1 bit nimmt man um zu markieren, ob es noch frei ist 3 bits (werte 0-7) nimmt man um zu markieren wo der elternknoten ist (rechts, links, diagonal usw usw...) also 4 bits - wenn es auf speicherverbr. ankommt oder 2 byte (1 byte für freien knoten, 1 byte für elternknoten) wenn es auf speed ankommt. dazu nimmt man noch eine liste - am besten type... oder array geht auch - wäre dann schneller. bei array mus man aber triksen: fixe arraygröße nehmen: und bei überschreitung mit slices jedes mal in großen schritten erweitern: etwa für 20 einträge. beim hinzufügen - einfach den letzten freien platz am ende der liste nehmen. falls liste, zu klein einfach liste vergrößern beim löschen verschiebt man NICHT alle nachfolgende einträge um 1 nach vorne, sondern man kopiert den letzten wert in die lücke hinein - und löscht dann den letzten wert aus der liste Im gegensatz zu types müsste man nicht dauernd neue objekte anlegen - das spart zeit. zudem verbraucht es weniger RAM. |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group