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

Украсить текст сойдет)
Program explosions;
Var
  
dlina,i,m,t,skorost,koli4estvo,rndx,rndy,Rf,Gf,Bf:integer;
  
p:array[1..9,1..300of integer;
begin
Rf
:=0;   ///цвет фона R(0-255)
Gf:=38;   ///цвет фона G(0-255)
Bf:=100  ///цвет фона B(0-255)
dlina:=30;  ///от 3 до 50.
skorost:=100;   /// от 1 до 100(по сути мы не ускоряем, а уменьшаем задержку).
koli4estvo:=300/// от 1 до 300(чем больше число, тем больше времени уходит на обработку массивов!!).
t:=3;   ///время через которое наш фейерверк умирает и появляется новый(работает коряво, не могу сообразить как сделать=)).
//внимание все параметры должны быть записаны целыми числами!

repeat
rndx
:=random(getwidth);   ///рэндомно выбираем на экране координату X для эпицентра фейерверка.
rndy:=random(getheight);   ///рэндомно выбираем на экране координату Y для эпицентра фейерверка.
for i:= 1 to koli4estvo do
begin
p
[1,i]:=random(360);   ///задаем рэндомно угол.
p[2,i]:=random(360);   ///задаем рэндомно угол.
p[3,i]:=random(255);   ///задаем цвет R.
p[4,i]:=random(255);   ///задаем цвет G.
p[5,i]:=random(255);   ///задаем цвет B.
p[6,i]:=rndx;   ///перемещаем координаты X.
p[7,i]:=rndy;   ///перемещаем координаты Y.
p[8,i]:=0;   ///присваеваем координате X, второй точки значение 0.
p[9,i]:=0;   ///присваеваем координате Y, второй точки значение 0.
end;
repeat
SetColor
(RfGfBf);   ///цвет фона
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;   ///расчитываем координату X.
p[7,i]:=(p[9,i]+p[7,i])/2;   ///расчитываем координату Y.
p[8,i]:=p[6,i]+trunc(sin(p[1,i])*dlina);   ///расчитываем координату X2.
p[9,i]:=p[7,i]+trunc(cos(p[2,i])*dlina);   ///расчитываем координату Y2.
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);   ///чертим линию по (заданным координатам-1), таким образом они становятся толще, визуально.
end;
repaint;   ///выводим на экран наше художество.
m:=m+100/skorost;   ///считаем время.
delay(100/skorost);   ///пауза.
until (m>t*50);   ///прерываем цикл.
m:=0;   ///сбрасываем время.
until (false);
end

Думаю с этого кода хватит, столько времени ему уделили...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Yadro (29.06.2012)