Mein Code funzt leider nur für ein Bild, ich will aber dass mehrere Bilder gleichzeitig nach unten laufen. Das zweite Bild soll ca.1 sekunde nach dem ersten starten. Ich habs schon mit arrays und for Scheifen versucht, jedoch vergeblich. Was muss ich ändern damit auch mehrere Bilder gleichzeitig nach unten laufen können?
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = vk_left then
begin
img1.Left:= img1.left -50; //Korb(img1) wird nach links verschoben.
if img1.left < 0 then
form1.img1.Left := 0;
end;
if key = vk_right then
begin
img1.Left:= img1.left +50; //Korb(img1) wird nach rechts verschoben.
if img1.Left + img1.Width > form1.Width then
img1.Left:= form1.Width - img1.Width;
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
btn1.Visible := false;
tm2.Enabled := true;
end;
procedure TForm1.tm1Timer(Sender: TObject);
begin
bier1.top := bier1.Top + 20; //Geschwindigkeit des Bildes das nach unten läuft.
if (bier1.Top + bier1.Height >= img1.Top) AND (bier1.Left <= img1.Left + img1.Width) AND (bier1.Left + bier1.Width >= img1.Left) then
begin
bier1.Visible := false;
lblres.Caption := inttostr(strtoint(lblres.Caption)+50); //Wenn mein Korb(img1) eine herunterfallende Bierflasche(bier1) auffängt bekommt man 50 Punkte.
tm2.Enabled := true;
tm1.Enabled := false;
end;
if bier1.Top > form1.ClientHeight then
begin
bier1.Visible := false;
tm2.Enabled := true;
tm1.Enabled := false;
end;
end;
procedure TForm1.tm2Timer(Sender: TObject);
begin
bier1 := TImage.Create(Self);
bier1.Parent:= Self;
bier1.Picture.LoadFromFile('flasche'+inttostr(random(3)+1)+'.bmp'); //Ich habe 3 verschiedene Bilder(flasche1, flasche2, flasche3) Jedesmal wird durch random entschieden welches Bild genommen wird.
bier1.AutoSize:=True;
bier1.Left:= random(form1.ClientWidth-bier1.Width);
bier1.Top:= -(bier1.Height);
tm1.Enabled := true;
tm2.Enabled := false;
end;
end.