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

Надо бы сам оригинальный код затестить, может он нерабочий
Опять не пашет, полностью переписал под MP.
Program explosions;
var vel,tx,ty,c,done,i,dir1:integer;
var x:array[0..50] of integer;
var y:array[0..50] of integer;
var x2:array[0..50] of integer;
var y2:array[0..50] of integer;
var xv:array[0..50] of integer;
var yv:array[0..50] of integer;
var ox:array[0..50] of integer;
var oy:array[0..50] of integer;

begin
  for i:= 0 to 50 do
    begin
    x[i]:=0;
    y[i]:=0;
    dir1:=trunc(random(1)*628);
    vel:=trunc(random(1)*5)+1;
    xv[i]:=trunc(sin(trunc(dir1))*vel);
    yv[i]:=trunc(cos(trunc(dir1))*vel);
    end;

tx:=trunc(random(1)*160);
ty:=trunc(random(1)*180);
c:=31;
done:=0;
drawtext('Explosions by Andrew L. Ayers',5,5);
drawtext('Press any key to exit demo',5,25);

  for i:= 0 to 50 do
    begin
    drawline(ox[i]+tx,oy[i]+ty,x[i]+tx,y[i]+ty);
    repaint;
    x[i]:=x[i]+xv[i];
    y[i]:=y[i]+yv[i];
    x2[i]:=x[i]+tx;
    y2[i]:=y[i]+ty;
    drawline(x2[i],y2[i],x[i]+tx,y[i]+ty);
    repaint;
    c:=c-1;
    end;

  repeat
  delay(100)
  until (c<16);
end.

Ввел новые переменные-массивы x2 и y2 для хранения координат точек, так как в оригинальном коде идет такая схема
line -(x,y), цвет
где "-" означает, что первая точка имеет координаты(x,y), а вторая точка будет последняя отрисованая, в нашем случае это x[i]+tx и y[i]+ty. Ну так где господа PassCall и Mr_F_, долго будете "включать умняка"? Может подскажете?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Yadro (27.06.2012)