Anonymní profil mnichovice – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil mnichovice – Programujte.comAnonymní profil mnichovice – Programujte.com

 

Příspěvky odeslané z IP adresy 85.132.172.–

mnichovice
Delphi › Odraz objektů v delphi
5. 6. 2008   #75995

Zdravím. Mám takový dotaz a zároveň prosím o pomoc. Dostal jsem za úkol vytvořit dvě kružnice, které se pohybují po formuláři, odrážejí se od kraje formuláře a když se sebe dotknou tak se odrazí. Ale to je právě ten kámen úrazu. Oni vždycky jen přejedou přes sebe a odraz žádný. Jestli máte někdo nějaký nápad tak poraďte. Dík moc za každou radu. Přikládám též moje dosud napsané procedury.

procedure TForm1.FormCreate(Sender: TObject);
begin
A := random(2);
B := random(2);
C := random(2);
D := random(2);
ob := TShape.Create(self);
with ob do
begin
randomize ;
shape := stCircle ;
width := random(100)+20 ;
height := width ;
left := random(100)+width div 2 ;
top := random(100)+height div 2 ;
X := left + width div 2 ;
Y := top + height div 2;
brush.color := random (2000000) ;
parent := self;
if A = 1 then
sleft:= true
else
sleft:= false ;


if B = 1 then
stop:= true
else
stop:= false ;


end ;


ob2 := TShape.Create(self);

with ob2 do
begin
randomize ;



shape := stCircle ;
width := random(100)+20 ;
height := width ;
left := random(100)+width div 2 ;
top := random(100)+height div 2 ;
X2 := left + width div 2 ;
Y2 := top + height div 2;
brush.color := random (2000000) ;
parent := self;

if C = 1 then
sleft2:= false
else
sleft2:= true ;
if D = 1 then
stop2:= false
else
stop2:= true;


end ;

end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if sleft = true
then
if X > ob.Width div 2
then dec(X)
else sleft := false
else
if X < Form1.ClientWidth - ob.Width div 2
then inc(X)
else sleft := true;
if stop = true
then
if Y > ob.Height div 2
then dec(Y)
else stop := false
else
if Y < Form1.ClientHeight - ob.Height div 2
then inc(Y)
else stop := true;
ob.Left := X - ob.Width div 2 ;
ob.Top := Y - ob.Height div 2 ;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
if sleft2 = true
then
if X2 > ob2.Width div 2
then dec(X2)
else sleft2 := false
else
if X2 < Form1.ClientWidth - ob2.Width div 2
then inc(X2)
else sleft2 := true;
if stop2 = true
then
if Y2 > ob2.Height div 2
then dec(Y2)
else stop2 := false
else
if Y2 < Form1.ClientHeight - ob2.Height div 2
then inc(Y2)
else stop2 := true;
ob2.Left := X2 - ob2.Width div 2 ;
ob2.Top := Y2 - ob2.Height div 2 ;
end;

end.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý