| Autor |
Beitrag |
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Mo 01.11.04 13:28
Hallo,
ich habe heute dank dem Forum diese funtkion fertig bekommemn
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); WegFinden (x+1,y); WegFinden (x,y-1); WegFinden (x-1,y); 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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: 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 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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...."
|
|
|