Du musst die Hindernis-Objekte in einen Array packen, dann funktioniert dein Code (bessere Lösung) oder du arbeitest mit
.FindComponent()_
Delphi-Quellcode:
var
Hindernis: THindernis;
...
Hindernis := FindComponent( 'Hindernis'+IntToStr(i));
Hindernis.initiate(clblue, random(image1.width - 20) + 10,random(image1.height- 20) + 10, random(40) + 81);
until ((sqrt(sqr(abs(maus.x - hindernis.hx)) + sqr(abs(maus.y - hindernis.hy)))> (maus.r + hindernis.hr) + 8));
hindernis.show;
...
end;
Danke schonmal, ich hab den Quelltext so geändert, wie du meintest. Jetzt meckert er aber in der Zeile
hindernis := FindComponent('Hindernis'+inttostr(i));
, dass mein selbsterstellter Typ THindernis mit dem Typ TComponent inkompatibel sei, womit er ja auch durchaus recht hat.
Mein Typ sieht so aus:
Delphi-Quellcode:
type
thindernis = class hx, hy, hr: single;
hfarbe: tcolor;
procedure initiate(fhneu: tcolor; xhneu, yhneu, rhneu: single);
procedure show;
end;
ist global definiert und wird in der initialization aufgerufen:
Delphi-Quellcode:
var
Hindernis, Hindernis1, Hindernis2, Hindernis3: tHindernis; // 'Hindernis' hab ich dazu geschrieben, war vorher nich drin
...
initialization
Hindernis1 := thindernis.create;
Hindernis2 := thindernis.create;
Hindernis3 := thindernis.create;