Показать сообщение отдельно
Старый 28.06.2012, 19:15   #42
Yadro
Нуждающийся
 
Регистрация: 24.04.2012
Сообщений: 57
Написано 7 полезных сообщений
(для 10 пользователей)
Ответ: Анимация "салют"

Program explosions
Var 
  
dlina,i,t,skorost,koli4estvo,rndx,rndy:integer
  
p:array[1..9,1..50of integer;
  
begin 
dlina
:=30;  ///от 3 до 20. 
skorost:=1;   /// от 1 до 150. 
koli4estvo:=50/// от 1 до 50. 
t:=3;   ///время(в секундах), через которое наш фейерверк умирает. 
//внимание все параметры должны быть записаны целыми числами! 

rndx:=20+random(getwidth-40); 
rndy:=20+random(getheight-40); 
for 
i:= 1 to koli4estvo do 
begin 
p
[1,i]:=random(360); //угол
p[2,i]:=random(360); //угол
p[3,i]:=random(255); //цвет
p[4,i]:=random(255); //цвет
p[5,i]:=random(255); //цвет
p[6,i]:=rndx//1я точка x
p[7,i]:=rndy//1я точка y
p[8,i]:=p[6,i]+trunc(sin(p[1,i])*dlina); //2я точка x
p[9,i]:=p[7,i]+trunc(cos(p[2,i])*dlina); //2я точка y
end

repeat 
SetColor
(000); 
FillRect(00GetWidthGetHeight); 
for 
i:= 1 to koli4estvo do 
begin 
setcolor
(p[3,i],p[4,i],p[5,i]); 
drawline(p[6,i],p[7,i],p[8,i],p[9,i]); 
drawline(p[6,i]-1,p[7,i]-1,p[8,i]-1,p[9,i]-1); 
p[6,i]:=(p[8,i]+p[6,i])/2
p[7,i]:=(p[9,i]+p[7,i])/2
p[8,i]:=p[6,i]+trunc(sin(p[1,i])*dlina); 
p[9,i]:=p[7,i]+trunc(cos(p[2,i])*dlina); 
end;

if 
keyToAction(getKeyClicked) = GA_FIRE then //если нажать 5 перерисовка
begin
rndx
:=random(getwidth);
rndy:=random(getheight); 
for 
i:= 1 to koli4estvo do
 
begin
    p
[1,i]:=random(360); 
    
p[2,i]:=random(360); 
    
p[3,i]:=random(255); 
    
p[4,i]:=random(255); 
    
p[5,i]:=random(255); 
    
p[6,i]:=rndx
    
p[7,i]:=rndy
    
p[8,i]:=p[6,i]+trunc(sin(p[1,i])*dlina); 
    
p[9,i]:=p[7,i]+trunc(cos(p[2,i])*dlina); 
 
end;
end;

repaint
delay(100/skorost); 
until false

end
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
AntiRock (28.06.2012)