Hey Leute,
ich versuche mich die ganze Zeit schon an einem Projekt. Und zwar sollen bei klick auf einen Button Kreise erstellt werden die sich bewegen und von den Wänden (Ränder der Form) abprallen.
Das erstellen klappt super nur nicht das bewegen. Hier mal das was ich bis jetzt habe:
Delphi-Quellcode:
TKreis = class(TShape)
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
radius,speedx,speedy,right,bottom:integer;
Abprallseite: String;
end;
var
Form1: TForm1;
kreis: array of TKreis;
procedure TForm1.Button1Click(Sender: TObject);
var arraylaenge:integer;
begin
arraylaenge := length(kreis);
setLength(kreis,length(kreis)+1);
kreis[arraylaenge]:= TKreis.Create(self);
With kreis[arraylaenge] do
begin
parent:= Form1;
Shape:=stCircle;
radius:=10+random(30);
width:=radius*2;
height:=radius*2;
top:=random(Form1.Clientheight-Kreis[arraylaenge].height-20);
left:=random(Form1.Clientwidth-Kreis[arraylaenge].width-20);
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
arraylaenge,k : integer;
begin
arraylaenge := length(kreis);
For k:= 0 to arraylaenge-1 do
begin
//Kreis[k].right:=Kreis[k].Left+Kreis[k].Width;
//Kreis[k].bottom:=Kreis[k].top+Kreis[k].Height;
Form1.right:=Form1.Left+Form1.ClientWidth;
Form1.bottom:=Form1.top+Form1.ClientHeight;
Kreis[k].speedx:=Random(20)+1;
Kreis[k].speedy:=Random(20)+1;
if Kreis[k].Top > Form1.clientheight then
begin
Kreis[k].AbprallSeite := 'Unten';
end;
if Kreis[k].Top < 0 then
begin
Kreis[k].AbprallSeite := 'Oben';
end;
if Kreis[k].AbprallSeite = 'Unten' then
begin
Kreis[k].Top := Kreis[k].Top + Kreis[k].speedy;
end;
if Kreis[k].AbprallSeite = 'Oben' then
begin
Kreis[k].Top := Kreis[k].Top - Kreis[k].speedy;
end;
if Kreis[k].left > Form1.clientwidth then
begin
Kreis[k].AbprallSeite := 'Rechts';
end;
if Kreis[k].left < 0 then
begin
Kreis[k].AbprallSeite := 'Links';
end;
if Kreis[k].AbprallSeite = 'Unten' then
begin
Kreis[k].Top := Kreis[k].Top + Kreis[k].speedx;
end;
if Kreis[k].AbprallSeite = 'Oben' then
begin
Kreis[k].Top := Kreis[k].Top - Kreis[k].speedx;
end;
end;
end;
Wieso bewegen sich die Kreise denn erst garnicht ? Was mache ich falsch ??