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

Вот он, вот он фейерверк моей мечты!!!
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
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Yadro (27.06.2012)