Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mo 01.11.04 13:28 
Hallo,
ich habe heute dank dem Forum diese funtkion fertig bekommemn
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
function TForm1.WegFinden(x,y:Integer):Boolean;
begin
 if not weggefunden then
  begin
    if (Map[x,y].Name = '') or ((Ziel.X <> x) and (Ziel.Y <> y))  then
    begin
      if (Ziel.X = x) and (Ziel.Y = y) then
      begin
        Ausgang;
        weggefunden := true;
      end else
      if Map[x,y].Name = '' then
      begin
        Map[x,y].Name:='m';
        WegFinden (x,y+1);  {nach rechts}
        WegFinden (x+1,y);  {nach unten }
        WegFinden (x,y-1);  {nach links }
        WegFinden (x-1,y);  {nach oben  }
        Map[x,y].name:='';
      end;
    end;
  end;
end;


nun möchte ich gerne, sie mir den kürtzten wef vom Player bis zum Ziel raußsucht und zurück gibt.

ich dachte zu erst an array weiß aber nicht genau wie ich sie schreiben soll.
ich müste ja praktisch bei jedem neuen weg ein neuen array anlegen.

_________________
MFG
Michael Springwald, "kann kein englisch...."
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 01.11.04 14:18 
Zitat:

ich müste ja praktisch bei jedem neuen weg ein neuen array anlegen.

Wie meinst du das "bei jedem neuen Weg"? Bei jedem Funktionsaufruf? Das Array könnte doch als offener Array-Parameter mit übergeben werden.
Oder hab ich das jetzt falsch verstanden?
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Mo 01.11.04 14:32 
Hallo Mimi,

ich würde die einzelnen Wegebeschreibungen in einer Liste speichern und diese wiederrum in einer Liste speichern. So kannst du nachher die Liste der Wege durchgehen und den kürzesten durchsuchen.

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mo 01.11.04 14:59 
@jaenicke
Sobalt er ein neuen weg gefunden hat soll ihn sich merken.
nur das problem ist: wie ?
ich kann ja nicht nach der richtung gehen.

_________________
MFG
Michael Springwald, "kann kein englisch...."
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 01.11.04 20:05 
Markier dir doch einfach jedes Feld, auf das du kommst mit einem Integer, den du als extra Paramter mit übergibst, der dir angibt, wie viele Felder du schon gegangen bist. Wenn du auf ein Feld kommst, wo bereits ein Wert <> 0 steht, der dazu noch kleiner ist als dein bereits gefundener Weg, dann ignorierst du den aktuellen Weg einfach. Wenn du auf ein Feld kommst, wo bereist ein Wert steht, der größer ist, als deine aktuelle Distanz, dann aktualisierst du diese einfach mit deinem aktuellen Wert.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Sa 06.11.04 20:38 
mir ist jetzt eingefallen wie ich es lösen könnte:
ich muss einfach nur wenn ich beim ziel bin die funktion neustarten damit sie einen neuen weg finden und dabei dann schauen ob sie da schon war oder nicht*G*

_________________
MFG
Michael Springwald, "kann kein englisch...."