Also, rekursiv aufgerufen wird da nichts. Ich häng mal den Code-Teil an:
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
if ListBox1.ItemIndex >= 0 then
LoadLevel(PP + 'Level/' + ListBox1.Items.Strings[ListBox1.ItemIndex] + '.txt');
end;
procedure TForm1.LoadLevel(const FileName: String);
var F: TStringList; i: Integer; Bildpfad: String;
begin
GameRunning := false;
F := TStringList.Create;
try
F.LoadFromFile(FileName);
if (F.Count < 4) or ((F.Count - 1) div 3 <> (F.Count - 1) / 3) then
begin
ShowMessage('Fehlerhafte Datei!');
exit;
end;
//Bild laden
Bildpfad := PP + 'Grafik/' + F.Strings[0];
if FileExists(Bildpfad) then
Bild.LoadFromFile(Bildpfad)
else
begin
ShowMessage('Die angegebene Bilddatei "' + Bildpfad + '" konnte nicht gefunden werden!');
exit;
end;
F.Delete(0);
//Daten laden
SetLength(S, 0);
for i := 1 to F.Count div 3 do
begin
SetLength(S, Length(S) + 1);
S[Length(S) - 1].Name := F.Strings[0];
try
S[Length(S) - 1].x := StrToInt(F.Strings[1]);
S[Length(S) - 1].y := StrToInt(F.Strings[2]);
except
ShowMessage('Ungültige Koordinaten!');
exit;
end;
F.Delete(0);
F.Delete(0);
F.Delete(0);
end;
finally
F.Free;
end;
GameRunning := true;
Index := -1;
Label2.Visible := true;
NextTown;
ShowMessage(''); //TEST -> wird nicht mehr angezeigt
end;
procedure TForm1.NextTown;
begin
inc(Index);
if Index > Length(S) - 1 then
ShowMessage('Game Over')
else
begin
Label2.Caption := S[Index].Name;
Image1.Canvas.Draw(0, 0, Bild);
end;
end;