27.06.2012, 17:00
|
#32
|
Оператор ЭВМ
Регистрация: 23.06.2012
Сообщений: 31
Написано 9 полезных сообщений (для 9 пользователей)
|
Ответ: Анимация "салют"
Так как для прозрачности нужно курить либы сделал так

Program explosions;
Var
dlina,i,skorost,koli4estvo,trololo: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:=35; /// от 1 до 50.
trololo:=300; ///ограничитель фейерверка. Хоть он и квадратный, но не столь заметно.
//внимание все параметры должны быть записаны целыми числами!
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);
setClip(x1[1]-trololo/2,y1[1]-trololo/2,trololo, trololo);
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]);
drawline(x1[i]-1,y1[i]-1,x2[i]-1,y2[i]-1);
end;
repaint;
delay(100/skorost);
until (false);
end.
жаль что setclip есть только квадратный 
|
(Offline)
|
|