Объединить 2 анимации - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста объединить 2 анимации, у меня если объединяю, что-то да не движется( нужно в 1 анимации сделать чтобы солнце двигалось как на 2 анимации 1 анимация
2 анимация

Решение задачи: «Объединить 2 анимации»

textual
Листинг программы
процедуре Солнце.
uses graphABC;
 
procedure Solnce(x0,y0,r0,r,n:integer;u:real);
var r1,i,x,y,x1,y1:integer;
    t:real;
begin
setpencolor(clyellow);
setbrushcolor(clyellow);
{лучи}
SetPenWidth(2); //толщина луча
x:=x0+round(r0*cos(u));
y:=y0-round(r0*sin(u));
t:=pi/2;
for i:=1 to n do
 begin
  if odd(i) then r1:=r+r div 2 // лучи с нечетным номером:
  else r1:=2*r;
  x1 := round(r1 * cos(t)); //абсцисса луча на окружности
  y1 := round(r1 * sin(t)); //ордината луча на окружности
  Line(x,y,x+x1,y-y1); //рисуем луч
  t:=t+2*pi/n;
 end;
{солнце}
Circle(x,y,r); //рисуем солнце
end;
 
procedure Obl(x,y:integer);
begin
setpencolor(clwhite);
setbrushcolor(clwhite);
circle(x,y,40);
circle(x+30,y,30);
circle(x-40,y,30);
end;
 
procedure Kor (x: integer);
var y: integer;
begin
y:=150;
setpencolor(clbrown);
setbrushcolor(clbrown);
rectangle(x+50,y+250,x+150,y+270);
line(x+149,y+268,x+180,y+250);
line(x+180,y+250,x+149,y+250);
floodfill(x+155,y+255,clbrown);
setpencolor(clwhite);
line(x+100,y+245,x+180,y+245);
line(x+180,y+245,x+100,y+150);
line(x+100,y+150,x+100,y+245);
line(x+90,y+245,x+50,y+245);
line(x+50,y+245,x+90,y+170);
line(x+90,y+170,x+90,y+245);
floodfill(x+105,y+240,clwhite);
floodfill(x+85,y+235,clwhite);
end;
 
var x0,y0,r0,xk,b: integer;
    u: real; 
    cl:Color;
begin
setwindowsize(700,500);
lockdrawing;
x0:=windowwidth div 2;
y0:=windowheight-100;
r0:=x0;
xk:=0;
u:=pi-arctan(windowheight/2/x0);
b:=255;
//cl//:=RGB(0,0,b);
repeat
clearwindow;
cl:=RGB(0,0,b);
setpencolor(Cl);//PowderBlue);
setbrushcolor(Cl);//PowderBlue);
rectangle(0,0,700,400);
Solnce(x0,y0,r0,30,40,u);
Obl(100,90);
Obl(650,120);
Obl(450,80);
SetBrushColor(ClSteelBlue); //цвет моря
SetPenColor(ClSteelBlue);
Rectangle(0, WindowHeight - 100, WindowWidth, WindowHeight);
Kor (xk);
sleep(1);
xk:=xk+1;
u:=u-0.005;
if u<pi/4 then 
if b>200 then b:=b-1;
redraw;
until xk>700;
end.

Объяснение кода листинга программы

Объединение двух анимаций в коде не происходит. Процедура Solnce рисует солнце с лучами, используя указанные параметры: x0, y0, r0, r, n, u. Переменные t, r1, i, x1, y1 используются для управления движением лучей. Процедура Obl рисует простое округлое тело (объект), используя указанные координаты x, y. Процедура Kor рисует коричневый прямоугольник, используя указанную координату x. Это может быть интерпретировано как движение объекта по горизонтальной оси. В основной части кода создается окно размером 700x500 пикселей. Затем происходит цикл, который повторяется до тех пор, пока значение переменной xk не превысит 700. В каждой итерации цикла выполняются следующие действия:

  1. Очищается окно.
  2. Устанавливается цвет кисти и пера на синий.
  3. Рисуется прямоугольник, заполняющий всё окно.
  4. Вызывается функция Solnce с указанными параметрами.
  5. Вызывается функция Obl с указанными параметрами.
  6. Вызывается функция Obl с указанными параметрами.
  7. Выполняется команда моря - рисуется прямоугольник с цветом морской воды.
  8. Вызывается функция Kor с указанной переменной xk.
  9. Осуществляется задержка в 1 секунду.
  10. Значение переменной xk увеличивается на 1.
  11. Значение переменной u уменьшается на 0.005 радиан.
  12. Если значение переменной u больше или равно pi/4, и значение переменной b меньше или равно 200, то значение переменной b уменьшается на 1.
  13. Осуществляется перерисовка окна. Таким образом, в цикле происходит постепенное изменение положения солнца, а также изменение цвета объекта при его движении.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5
Похожие ответы