Program explosions;
Var
dlina,i,t,skorost,koli4estvo,rndx,rndy:integer;
p:array[1..9,1..50] of 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(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]);
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.