2D pathfinding (array)

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

darth

Betreff: 2D pathfinding (array)

BeitragMi, Aug 08, 2007 0:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Aug 08, 2007 1:44
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Matthias

Betreff: A*Pfadfinding ist der schlüssel.

BeitragFr, Aug 10, 2007 8:02
Antworten mit Zitat
Benutzer-Profile anzeigen
A*Pfadfinding bekommst du hier: http://www.blitzbase.de/2c.htm
Oder im Codearchiv: https://www.blitzforum.de/foru...hp?t=23931

Gruß Matthias

kriD

Betreff: A*

BeitragSo, Aug 12, 2007 0:40
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Aug 12, 2007 12:11
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Aug 12, 2007 12:31
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group