Показать сообщение отдельно
Старый 28.06.2012, 18:12   #41
AntiRock
Оператор ЭВМ
 
Аватар для AntiRock
 
Регистрация: 23.06.2012
Сообщений: 31
Написано 9 полезных сообщений
(для 9 пользователей)
Ответ: Анимация "салют"

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

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;
end;
repeat
SetColor
(000);
FillRect(00GetWidthGetHeight);
for 
i:= 1 to koli4estvo do
begin
setcolor
(p[3,i],p[4,i],p[5,i]);
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);
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);
end;
repaint;
m:=m+100/skorost;
delay(100/skorost);
until (m>t*50);
end
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Yadro (28.06.2012)