Direkte Wegsuche
Um weiteres "rumraten" zu ersparen hier der Code:
PathFind.zip - Quellcode von Demo, PathFind und Includes
(Link aktuallisiert 9.7.2010)
Inhalt:
PathFind-Demo.pb ; Beispiel für die Anwendung
PathFind.pbi ; Haupt-Include für das Wegfinden
Math.pbi, Vector2D.pbi und Line2D.pbi ; Diese sind für die PathFind.pbi notwenig, weil ich das nicht alles mit in die PathFind quetschen wollte. Logischerweise sind dabei auch unbenutze Proceduren dabei, diese gelten hiermit als mit "veröffendlicht"
Mouse.pbi ; ist noch für die Demo notwenig.
Meine Code sind immer etwas "knapp" Kommentiert, bitte nicht übel nehmen
Zur Frage:"Wie sieht denn deine Thread-Arbeitsverteilung aus ?"
Mit einer Procedure wird halt ein Thread gestartet:
CreateThread(@FindPathThread(), *PathTree)
dieser Thread arbeitet nun (völlig unabhängig von außen)
Wenn der Weg gefunden ist, endet der Thread und ExaminePath wird 1 und man kann die Wegpunkt auslesen.
Wenn man nun während der Wegsuche n neue Linie setzt wird die aktuelle wegfindung gekillt, dass das so hart sein muss, kann dabei jeder selber entscheiden ich habe halt FreePath eingebaut.
Schauts euch einfach an.
PS: sobalt auch nur ein Byte geändert wird, verfällt die Rückgabegarantie
... kleiner witz ^^
Noch n kleiner AnwendungsHinweis:
Falls jemand diese Wegfindung bei "normalen" Quadratischen oder Rechteckigen Gebäuden anwenden will, dann braucht man dort nicht 4 Seitenwände, sondern ein Kreuz aus den Diagonalen erfüllt auch den Zweg und man braucht nur 50% der Wände.
Natürlich muss man dann noch verhindern das jemand das Ziel IN DAS Gebäude setzt.
PathFind.zip - Quellcode von Demo, PathFind und Includes
(Link aktuallisiert 9.7.2010)
Inhalt:
PathFind-Demo.pb ; Beispiel für die Anwendung
PathFind.pbi ; Haupt-Include für das Wegfinden
Math.pbi, Vector2D.pbi und Line2D.pbi ; Diese sind für die PathFind.pbi notwenig, weil ich das nicht alles mit in die PathFind quetschen wollte. Logischerweise sind dabei auch unbenutze Proceduren dabei, diese gelten hiermit als mit "veröffendlicht"
Mouse.pbi ; ist noch für die Demo notwenig.
Meine Code sind immer etwas "knapp" Kommentiert, bitte nicht übel nehmen
Zur Frage:"Wie sieht denn deine Thread-Arbeitsverteilung aus ?"
Mit einer Procedure wird halt ein Thread gestartet:
CreateThread(@FindPathThread(), *PathTree)
dieser Thread arbeitet nun (völlig unabhängig von außen)
Wenn der Weg gefunden ist, endet der Thread und ExaminePath wird 1 und man kann die Wegpunkt auslesen.
Wenn man nun während der Wegsuche n neue Linie setzt wird die aktuelle wegfindung gekillt, dass das so hart sein muss, kann dabei jeder selber entscheiden ich habe halt FreePath eingebaut.
Schauts euch einfach an.
PS: sobalt auch nur ein Byte geändert wird, verfällt die Rückgabegarantie
... kleiner witz ^^
Noch n kleiner AnwendungsHinweis:
Falls jemand diese Wegfindung bei "normalen" Quadratischen oder Rechteckigen Gebäuden anwenden will, dann braucht man dort nicht 4 Seitenwände, sondern ein Kreuz aus den Diagonalen erfüllt auch den Zweg und man braucht nur 50% der Wände.
Natürlich muss man dann noch verhindern das jemand das Ziel IN DAS Gebäude setzt.
Zuletzt geändert von STARGÅTE am 10.07.2010 23:19, insgesamt 1-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
wie soll das gehen?kswb73 hat geschrieben:... parralel durch die Mauern ...
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Okay schlecht beschrieben. Ich poste doch mal ein Screenshout. (Der Weg wurde noch nicht berechnet und mit dieser Demo gemacht)
Windows XP: PB 4.31, PB 4.4, PB 4.51
Open Suse 11.2: PB 4.4
Open Suse 11.2: PB 4.4
ahh jo ^^
da ist jetzt wieder meine Genauigkeit in der Line2D.pbi schult.
falls 2 Linien parallel und genau überander liegen ergibt die Kollision natürlich das ergebnis -1 zurück (also unendlichviele) statt 1 (genau eine)
ich schau mir das schnell an .
PS: Dieses Problem existiert natürlich nur im falle von sehr genauen Positionen, sobalt auch nur 1 pixel unterschied ist, egal wo, gibt es keine geraden zahlen mehr ...
EDIT:
AH nee, das Problem ist ein anderes, ich biete ihm ja keine passenden Umwege, denn diese würde ja wieder genau durch die Mauer laufen... das heißt ich müsste nur n kleine verschiebung der Knoten machen ....
da ist jetzt wieder meine Genauigkeit in der Line2D.pbi schult.
falls 2 Linien parallel und genau überander liegen ergibt die Kollision natürlich das ergebnis -1 zurück (also unendlichviele) statt 1 (genau eine)
ich schau mir das schnell an .
PS: Dieses Problem existiert natürlich nur im falle von sehr genauen Positionen, sobalt auch nur 1 pixel unterschied ist, egal wo, gibt es keine geraden zahlen mehr ...
EDIT:
AH nee, das Problem ist ein anderes, ich biete ihm ja keine passenden Umwege, denn diese würde ja wieder genau durch die Mauer laufen... das heißt ich müsste nur n kleine verschiebung der Knoten machen ....
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Man bin ich müde
Hier nun die erneuerte PathFind.pbi
oder gleich das ganze Archiv:
Hier nun die erneuerte PathFind.zip
sollte nun n richtigen Umweg machen
Hier nun die erneuerte PathFind.pbi
oder gleich das ganze Archiv:
Hier nun die erneuerte PathFind.zip
sollte nun n richtigen Umweg machen
Zuletzt geändert von STARGÅTE am 10.07.2010 23:18, insgesamt 1-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
-
- Beiträge: 630
- Registriert: 05.05.2005 19:06
es gab soeben nen fehler ^^ screen:
http://img231.imageshack.us/img231/5146/fehlerpm9.jpg
gruss
pmthequick
http://img231.imageshack.us/img231/5146/fehlerpm9.jpg
gruss
pmthequick
gut, trotz OnError Meldung, nutzt mir das 0% ^^
Line 165 :
Line 165 :
Code: Alles auswählen
If i1 >= 0 And i1 <= 1
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
err hmmm!
Bei mir kams genau auch zu einem Crash - Interessanterweise bei GENAU derselben Speicheradresse...
Werd den Source mal nach dieser Woche durchguggen - Sonntag und ich bin am Arbeiten ...... h8h8h8 - haben mir wieder ein Projekt reingebrummt....
Thalius
Bei mir kams genau auch zu einem Crash - Interessanterweise bei GENAU derselben Speicheradresse...
Werd den Source mal nach dieser Woche durchguggen - Sonntag und ich bin am Arbeiten ...... h8h8h8 - haben mir wieder ein Projekt reingebrummt....
Thalius
Zuletzt geändert von Thalius am 14.09.2008 20:31, insgesamt 1-mal geändert.
"...smoking hash-tables until until you run out of memory." :P