Ja, hab' ich ja auch schon vor Ewigkeiten geändert. Bin halt ein kleines ungeduldiges Kind.
Das ganze sieht bei mir jetzt folgender Maßen aus:
Als erstes hätten wir da die Klassen (stark vereinfacht).
Delphi-Quellcode:
TWorld = class
private
FWorldArray : array[0..31, 0..31] of TCreature;
[...]
public
constructor Create( [...] );
[...]
end;
// ------------------------------
TFox = class(TAnimal)
private
public
constructor Create;
end;
Dann den constructor von TWorld:
Delphi-Quellcode:
constructor TWorld.Create( [...] );
var
i: Integer;
j: Integer;
begin
[...]
for i := 0 to 31 do
for j := 0 to 31 do
begin
AddCreature(TFox, FWorldArray[i, j]);
end;
end;
Sowie die Funktion zum "füllen" des Arrays:
Delphi-Quellcode:
procedure TWorld.AddCreature(InstanceClass: TClass; var Reference);
var
Instance: TObject;
begin
Instance := TObject(InstanceClass.NewInstance);
TObject(Reference) := Instance;
try
Instance.Create;
except
TObject(Reference) := nil;
raise;
end;
end;
Mein Problem liegt jetzt darin, wie ich den Konstruktor von TWorld aufrufen muss, so dass das Array komplett mit Instanzen von TFox gefüllt wird.
Delphi-Quellcode:
procedure TFormMain.FormCreate(Sender: TObject);
var
World: TWorld;
begin
World := TWorld.Create(10, 10);
World.Create(10, 10);
[ ??? ]
end;
Hat jemand eine Idee?