So würde ich das machen:
procedure TfrmWege.SpielfeldInitialisieren;
// Den ausgewählten Labyrinth-Grundriss erst mal auf Bildschirm ausgeben
var
i, j: Integer;
begin
for i := 0 to MaxZeile - 1 do for j := 0 to MaxSpalte - 1 do
Ausgabefeld.Cells [i,j] := Plan [j,i];
{ Die Umstellung von i,j nach j,i beachten ! }
end{SpielfeldInitialisieren};
Erster Schritt ist also das Initialisieren eines Grundrisses für das Labirinth.
Zweiter Schritt:
procedure TfrmWege.SpielplanEinlesen (Name: String);
var
i,j: Integer;
begin
{ Das auszuwählende Array einlesen }
for i := 0 to MaxZeile-1 do for j := 0 to MaxSpalte-1 do
begin
if Name = 'Laby0' then Plan[i,j] := Laby0[i,j]
else if Name = 'Laby1' then Plan[i,j] := Laby1[i,j]
else if Name = 'Laby2' then Plan[i,j] := Laby2[i,j];
end{for};
end{SpielplanEinlesen};
Dann kreierst Du eine Einlesung des Spielplans um das Ganze dem Compiler klar zu machen:
procedure TfrmWege.Wegsuche (zl, sp: Integer);
// Der eigentliche "Motor" des Programms
// Beachte den rekursiven Aufruf!
begin
if IsStein (zl,sp,leer) OR IsStein (zl,sp,tor) then
begin
if IsStein (zl,sp,tor) then Ausgang
else
if IsStein (zl,sp,leer) then
begin
SetStein (zl,sp,marke);
Pause (Pausenzeit);
(* ================================================ *)
{} Wegsuche (zl,sp+1); {nach rechts} {}
{} Wegsuche (zl+1,sp); {nach unten } {}
{} Wegsuche (zl,sp-1); {nach links } {}
{} Wegsuche (zl-1,sp); {nach oben } {}
(* ================================================ *)
ResetStein (zl,sp);
Pause (Pausenzeit);
end{if IsStein(leer)};
end{if IsStein};
end{Wegsuche};
Dann sucht die KI den Weg.
procedure TfrmWege.Ausgang;
// Zeigt Torausgang im Programm an
begin
panMeldung.Caption := 'Ausgang gefunden !! Weiter mit <TASTE> ...';
WAVDateienAbspielen ('go.wav', false);
panTor.Visible := true;
repeat
Application.ProcessMessages;
until Abbruch;
abbruch := false;
end{Ausgang};
Mit den integrierten Objekten kannst Du dann den Ausgang markieren und finden lassen. Sollte an sich nichts Problematisches dabei sein. Einen Ausweg muss es geben, da die Initialisierung des Spielfeldes darauf abgestimmt ist. Sonst gibt es keine Lösung!
MfG
The Wishmaster