Пользователь
Регистрация: 14.05.2016
Сообщений: 33
|
Помогите доделать анимацию (элемент)
Приветствую.
Делаю анимацию. 3 ракеты летят вверх 5 раз. Ракеты летят вверх, это все циклом прописал, но мне нужно еще чтобы огонь внизу (дуги) увеличивался и уменьшался во время движения ракет. Сделал цикл для уменьшения дуг (огня) ракет, но куда не вставлю его, выходит не очень...
Помогите пожалуйста делать так, чтобы во время движения ракеты на 1 пиксель вверх, огонь уменьшался на 1 пиксель.
Когда огонь уменьшится на 10 пикселей нужно чтобы он увеличивался на 10 пикселей по одному пикселю и снова же, когда он увеличится на 10 пикселей, чтобы уменьшался и т.д. циклично.
Код:
1. Все три ракеты летят вверх:
Код:
Program Animation;
Uses GraphABC;
Var i,j,k:integer;
Begin
SetWindowSize(800,600);
LockDrawing;
//Raketa_One;
//Raketa_Two;
//Raketa_Three;
For j:=0 to 5 do
Begin
// Animation!
For i:=0 to 360 do
begin
ClearWindow(clWhite);
// Raketa One!
Rectangle(55,176+510-i*9,205,426+510-i*9);
Line(55,276+510-i*9,0,426+510-i*9);
Line(0,426+510-i*9,55,426+510-i*9);
Line(205,276+510-i*9,260,426+510-i*9);
Line(205,426+510-i*9,260,426+510-i*9);
Circle(130,250+510-i*9,35);
Circle(130,350+510-i*9,35);
Arc(205,176+510-i*9,150,120,181);
Arc(55,176+510-i*9,150,0,60);
Arc(215,426+510-i*9,150,180,236);
Arc(45,426+510-i*9,150,304,360);
Arc(215,426+510-i*9,120,180,225);
Arc(45,426+510-i*9,120,315,360);
FloodFill(130,55+510-i*9,RGB(255,0,0));
FloodFill(130,175+510-i*9,RGB(255,0,0));
FloodFill(130,300+510-i*9,RGB(236,236,236));
FloodFill(130,424+510-i*9,RGB(236,236,236));
FloodFill(32,424+510-i*9,RGB(255,0,0));
FloodFill(232,424+510-i*9,RGB(255,0,0));
FloodFill(130,220+510-i*9,RGB(52,158,221));
FloodFill(130,320+510-i*9,RGB(52,158,221));
FloodFill(130,283+510-i*9,RGB(52,158,221));
FloodFill(130,383+510-i*9,RGB(52,158,221));
FloodFill(130,430+510-i*9,RGB(255,197,35));
FloodFill(130,504+510-i*9,RGB(255,197,35));
FloodFill(80,430+510-i*9,RGB(255,64,0));
FloodFill(180,430+510-i*9,RGB(255,64,0));
FloodFill(130,524+510-i*9,RGB(255,64,0));
// Raketa One!
// Raketa Two!
Rectangle(55+270,176+510-i*6,205+270,426+510-i*6);
Line(55+270,276+510-i*6,0+270,426+510-i*6);
Line(0+270,426+510-i*6,55+270,426+510-i*6);
Line(205+270,276+510-i*6,260+270,426+510-i*6);
Line(205+270,426+510-i*6,260+270,426+510-i*6);
Circle(130+270,250+510-i*6,35);
Circle(130+270,350+510-i*6,35);
Arc(205+270,176+510-i*6,150,120,181);
Arc(55+270,176+510-i*6,150,0,60);
Arc(215+270,426+510-i*6,150,180,236);
Arc(45+270,426+510-i*6,150,304,360);
Arc(215+270,426+510-i*6,120,180,225);
Arc(45+270,426+510-i*6,120,315,360);
FloodFill(130+270,55+510-i*6,RGB(255,0,0));
FloodFill(130+270,175+510-i*6,RGB(255,0,0));
FloodFill(130+270,300+510-i*6,RGB(236,236,236));
FloodFill(130+270,424+510-i*6,RGB(236,236,236));
FloodFill(32+270,424+510-i*6,RGB(255,0,0));
FloodFill(232+270,424+510-i*6,RGB(255,0,0));
FloodFill(130+270,220+510-i*6,RGB(52,158,221));
FloodFill(130+270,320+510-i*6,RGB(52,158,221));
FloodFill(130+270,283+510-i*6,RGB(52,158,221));
FloodFill(130+270,383+510-i*6,RGB(52,158,221));
FloodFill(130+270,430+510-i*6,RGB(255,197,35));
FloodFill(130+270,504+510-i*6,RGB(255,197,35));
FloodFill(80+270,430+510-i*6,RGB(255,64,0));
FloodFill(180+270,430+510-i*6,RGB(255,64,0));
FloodFill(130+270,524+510-i*6,RGB(255,64,0));
// Raketa Two!
// Raketa Three!
Rectangle(55+540,176+510-i*3,205+540,426+510-i*3);
Line(55+540,276+510-i*3,0+540,426+510-i*3);
Line(0+540,426+510-i*3,55+540,426+510-i*3);
Line(205+540,276+510-i*3,260+540,426+510-i*3);
Line(205+540,426+510-i*3,260+540,426+510-i*3);
Circle(130+540,250+510-i*3,35);
Circle(130+540,350+510-i*3,35);
Arc(205+540,176+510-i*3,150,120,181);
Arc(55+540,176+510-i*3,150,0,60);
Arc(215+540,426+510-i*3,150,180,236);
Arc(45+540,426+510-i*3,150,304,360);
Arc(215+540,426+510-i*3,120,180,225);
Arc(45+540,426+510-i*3,120,315,360);
FloodFill(130+540,55+510-i*3,RGB(255,0,0));
FloodFill(130+540,175+510-i*3,RGB(255,0,0));
FloodFill(130+540,300+510-i*3,RGB(236,236,236));
FloodFill(130+540,424+510-i*3,RGB(236,236,236));
FloodFill(32+540,424+510-i*3,RGB(255,0,0));
FloodFill(232+540,424+510-i*3,RGB(255,0,0));
FloodFill(130+540,220+510-i*3,RGB(52,158,221));
FloodFill(130+540,320+510-i*3,RGB(52,158,221));
FloodFill(130+540,283+510-i*3,RGB(52,158,221));
FloodFill(130+540,383+510-i*3,RGB(52,158,221));
FloodFill(130+540,430+510-i*3,RGB(255,197,35));
FloodFill(130+540,504+510-i*3,RGB(255,197,35));
FloodFill(80+540,430+510-i*3,RGB(255,64,0));
FloodFill(180+540,430+510-i*3,RGB(255,64,0));
FloodFill(130+540,524+510-i*3,RGB(255,64,0));
// Raketa Three!
Redraw;
Sleep(1);
end;
// Animation
End;
End.
2. Одна ракета летит вверх: (мне хотя бы для одной такое сделать , для других сам):
Код:
Program Animation;
Uses GraphABC;
Var i,j,k:integer;
Begin
SetWindowSize(800,600);
LockDrawing;
//Raketa_One;
//Raketa_Two;
//Raketa_Three;
For j:=0 to 5 do
Begin
// Animation!
For i:=0 to 360 do
begin
ClearWindow(clWhite);
// Raketa One!
Rectangle(55,176+510-i*9,205,426+510-i*9);
Line(55,276+510-i*9,0,426+510-i*9);
Line(0,426+510-i*9,55,426+510-i*9);
Line(205,276+510-i*9,260,426+510-i*9);
Line(205,426+510-i*9,260,426+510-i*9);
Circle(130,250+510-i*9,35);
Circle(130,350+510-i*9,35);
Arc(205,176+510-i*9,150,120,181);
Arc(55,176+510-i*9,150,0,60);
Arc(215,426+510-i*9,150,180,236);
Arc(45,426+510-i*9,150,304,360);
Arc(215,426+510-i*9,120,180,225);
Arc(45,426+510-i*9,120,315,360);
FloodFill(130,55+510-i*9,RGB(255,0,0));
FloodFill(130,175+510-i*9,RGB(255,0,0));
FloodFill(130,300+510-i*9,RGB(236,236,236));
FloodFill(130,424+510-i*9,RGB(236,236,236));
FloodFill(32,424+510-i*9,RGB(255,0,0));
FloodFill(232,424+510-i*9,RGB(255,0,0));
FloodFill(130,220+510-i*9,RGB(52,158,221));
FloodFill(130,320+510-i*9,RGB(52,158,221));
FloodFill(130,283+510-i*9,RGB(52,158,221));
FloodFill(130,383+510-i*9,RGB(52,158,221));
FloodFill(130,430+510-i*9,RGB(255,197,35));
FloodFill(130,504+510-i*9,RGB(255,197,35));
FloodFill(80,430+510-i*9,RGB(255,64,0));
FloodFill(180,430+510-i*9,RGB(255,64,0));
FloodFill(130,524+510-i*9,RGB(255,64,0));
// Raketa One!
Redraw;
Sleep(1);
end;
// Animation
End;
End.
3. Анимация самого огня (уменьшение дуг):
Код:
Program Animation;
Uses GraphABC;
Var j,k:integer;
Begin
SetWindowSize(800,600);
LockDrawing;
For j:=1 to 100 do
Begin
For k:=1 to 10 do
Begin
If k<10 then
Begin
ClearWindow(clWhite);
Rectangle(55,176,205,426);
Arc(215+k*2,426,150,180,236-k);
Arc(45-k*2,426,150,304+k,360);
Redraw;
Sleep(100);
End;
End;
End;
END.
|