Оператор ЭВМ
Регистрация: 23.06.2012
Сообщений: 31
Написано 9 полезных сообщений (для 9 пользователей)
|
Ответ: Анимация "салют"
От нечего делать решил поработать над этим кодом. Оптимизировал, убрал циклический rnd цвета, так как жрет много процессорного времени и нам этого не нужно, все массивы собрал в один ,благодаря чему, дальнейшая работа с кодом просто невозможна, добавил таймер.
=)
Program explosions; Var dlina,i,m,t,skorost,koli4estvo,rndx,rndy:integer; p:array[1..9,1..50] of 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(0, 0, 0); FillRect(0, 0, GetWidth, GetHeight); 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.
|