2D pathfinding (array)
Übersicht

![]() |
darthBetreff: 2D pathfinding (array) |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi,
ich braeuchte hilfe. eine theoretische hilfe. ich bin am erschaffen einer KI die ihren weg durch ein "labyrinth" findet. wie sie dies macht weiss ich schon. im prinzip geht es einfach darum zu sehn welches feld von dem jetzigen erreichbar ist und dies rekursiv zu machen bis keines mehr erreichbar ist. Code: [AUSKLAPPEN] function path(x,y)
if feld(x,y)=1 then feld(x,y)=2 if x>0 then if feld(x-1,y)=1 then path(x-1,y) endif if x<max then if feld(x+1,y)=1 then path(x+1,y) endif if y>0 then if feld(x,y-1)=1 then path(x,y-1) endif if y<max then feld(x,y+1)=1 then path(x,y+1) endif endif end function nun muesste das ding aber auch den kuerzesten weg finden. eigentlich koennte man ja einfach path(x,y,laenge+1) aufrufen, aber selbst dann muesste ich einen weg finden dies zu speichern. dazu koennte ich einen type einfuegen und beim erreichen des ziels die laenge speichern. allerdings weiss ich dann keine moeglichkeit den weg zurueckverfolgen zu koennen. kann mir jemand helfen? wie finde ich den kuerzesten weg von A zu B in einem 2d array? |
||
Diese Signatur ist leer. |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
A* wäre da eine Idee.
Ist eigentlich einfach nachzuvollziehen. Da kannst du dir deine Funktion aber auch sparen xD A* kann allerdings noch sehr optimiert werden, da es zwar den kürzesten Weg findet, jedoch nicht unbedingt schnell. |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
MatthiasBetreff: A*Pfadfinding ist der schlüssel. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
A*Pfadfinding bekommst du hier: http://www.blitzbase.de/2c.htm
Oder im Codearchiv: https://www.blitzforum.de/foru...hp?t=23931 Gruß Matthias |
||
![]() |
kriDBetreff: A* |
![]() Antworten mit Zitat ![]() |
---|---|---|
oder hier.. das find ich sehr gut: http://www.policyalmanac.org/g...al_de.html
ich denke, dass wird helfen.. MfG kriD |
||
Wenn ich du wäre, wäre ich lieber ich! |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hatte hier mal was für BMax geschrieben, wobei die A* Pathfinding Routine sehr stark optimiert wurde weil ich nicht alle möglichen Wege berechne, sondern quasi einen Eimer Wasser am Startpunkt ausschütte und der erste Wassertropfen der am Zielpunkt ankommt (und somit den kürzesten Weg zurück gelegt hat) den Weg zurück liefert.
Zitat: https://www.blitzforum.de/foru...ight=stern
Das ganze Funktioniert deshalb eben so schnell, weil ich alle Verzweigungen schrittweise berechne, anstatt rekursiv alle möglichen Wege durchzugehen und gegeneinander vergleiche. Vielleicht hilft dir der Code ja weiter, leider nur für BMax aber müsste zu verstehen sein. |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Firstdeathmaker
Habe ich mir schonmal angesehen. Es ist für leute die BMax nicht haben und sich damit noch nie beschäftigt haben nicht zu vestehen. Ich glaube dir sogar das dieses System extrem schnell sein wird und es wäre schön wenn du es auch versuchen würdest mal in Blitz3D zu schreiben. Ich selbst habe mir auf ein ähnliches Prinzip einen Pfadfinding gebastelt. Allerding will ich den Code nicht rausgeben bzw er wäre bestimmt auch zu schwer zu verstehen. http://aintelligence.ai.funpic...gsuche.rar |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group