erstmal ganz viel codeschnipsel:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
image : array[0..10] of TImage;
j : integer;
begin
randomize;
image[i] := TImage.Create(Form1);
image[i].Left := Random(Width);
if i > 0 then begin
for j:=0 to i do begin
if (image[i].Left < (image[j].Left + Image[j].Width)) and
(image[i].left > image[j].Left) and
(image[i].Top > Image[j].Top) and
(image[i].Top < (Image[j].Top + Image[j].Height)) then begin
image[i].Free;
end
else
begin
image[i].Picture.LoadFromFile('stein.bmp');
image[i].Parent := Form1;
image[i].Top := 0;
Inc(i);
end;
end;
end
else
begin
image[i].Picture.LoadFromFile('stein.bmp');
image[i].Parent := Form1;
image[i].Top := 0;
Inc(i);
end;
if i = 10 then timer1.enabled := false;
end;
sieht ziemlich komisch aus funktioniert auch nicht.
d.h.:den ersten timerdurchlauf, wenn i = 0 macht delphi noch mitaber denn wenn i=1 gibts ViolenceAccess in der if-klausel beider ersten überprüfung!
die sache mit dem j hab ich gemacht, damit ich überprüfen kann ob zwei steine aufeinander liegen.
wahrscheinlich gibts eh ne einfachere möglichkei als arrays. und die ist nicht nur einfacher sondern auch effektiver
* edt: hab vergessen zu sagen dass i jetz global is weiß nich ob des nötig is?!?
** edt: hab als parent mal paintbox1 und nicht form1 genommen, das hat delphi ein problem dass ich glaub paintbox nicht TwinControl is sindern irgendwas anders(weiß nicht mehr genau)