Объединить 2 анимации - PascalABC.NET
Формулировка задачи:
Решение задачи: «Объединить 2 анимации»
процедуре Солнце. 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. В каждой итерации цикла выполняются следующие действия:
- Очищается окно.
- Устанавливается цвет кисти и пера на синий.
- Рисуется прямоугольник, заполняющий всё окно.
- Вызывается функция Solnce с указанными параметрами.
- Вызывается функция Obl с указанными параметрами.
- Вызывается функция Obl с указанными параметрами.
- Выполняется команда
моря
- рисуется прямоугольник с цветом морской воды. - Вызывается функция Kor с указанной переменной xk.
- Осуществляется задержка в 1 секунду.
- Значение переменной xk увеличивается на 1.
- Значение переменной u уменьшается на 0.005 радиан.
- Если значение переменной u больше или равно pi/4, и значение переменной b меньше или равно 200, то значение переменной b уменьшается на 1.
- Осуществляется перерисовка окна. Таким образом, в цикле происходит постепенное изменение положения солнца, а также изменение цвета объекта при его движении.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д