Odraz objektů v delphi – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Odraz objektů v delphi – Delphi – Fórum – Programujte.comOdraz objektů v delphi – Delphi – Fórum – Programujte.com

 

mnichovice
~ Anonymní uživatel
1 příspěvek
5. 6. 2008   #1
-
0
-

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.

Nahlásit jako SPAM
IP: 85.132.172.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

SFML - odraz lopty — založil Twit

Delphi 6 — založil mimi

C++ vs.Delphi — založil Dávid Ivan

Delphi 5 — založil seberm

 

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