Вот он, вот он фейерверк моей мечты!!!
Program explosions;
Var
dlina,i,skorost,koli4estvo:integer;
si:array[1..50] of integer;
co:array[1..50] of integer;
x2:array[1..50] of integer;
y2:array[1..50] of integer;
x1:array[1..50] of integer;
y1:array[1..50] of integer;
r:array[1..50] of integer;
g:array[1..50] of integer;
b:array[1..50] of integer;
begin
dlina:=10; ///от 3 до 20
skorost:=150; /// от 1 до 150
koli4estvo:=20; /// от 1 до 50
//įIJнимание все параметры должны быть записаны целыми числами!
for i:= 1 to koli4estvo do
begin
x1[i]:=getwidth/2;
y1[i]:=getheight/2;
si[i]:=random(360);
co[i]:=random(360);
x2[i]:=x1[i]+trunc(sin(si[i])*dlina);
y2[i]:=y1[i]+trunc(cos(co[i])*dlina);
drawline(x1[i],y1[i],x2[i],y2[i]);
end;
repaint;
delay(150/skorost);
repeat
SetColor(255, 255, 255);
FillRect(0, 0, GetWidth, GetHeight);
for i:= 1 to koli4estvo do
begin
r[i]:=random(255);
g[i]:=random(255);
b[i]:=random(255);
setcolor(r[i],g[i],b[i]);
x1[i]:=x2[i];
y1[i]:=y2[i];
x2[i]:=x1[i]+trunc(sin(si[i])*dlina);
y2[i]:=y1[i]+trunc(cos(co[i])*dlina);
drawline(x1[i],y1[i],x2[i],y2[i]);
end;
repaint;
delay(100/skorost);
until (false);
end.
Вот только лучше будет вынести рэндом цвета из repeat, так как много времени уходит только на то, чтобы дать каждой переменной каждой линии цвет...считай 3*50 и rnd