Анимация. Ёлка растет - Pascal ABC
Формулировка задачи:
Добрый день, срочно, пожалуйста, данная ёлка должна расти, как анимация.
Пожалуйста, срочно.1
Та же ёлка,но разукрасил.
Сделайте анимацию, чтобы она росла, пожалуйста!
Решение задачи: «Анимация. Ёлка растет»
textual
Листинг программы
uses graphABC; var r, i, j, x, y, c: integer; procedure Shar(xx, yy: integer); begin setpencolor(clblack); setbrushcolor(clred); circle(xx, yy, 10); setbrushcolor(clmaroon); setpencolor(clmaroon); circle(xx + 2, yy + 2, 5); end; procedure Triangle(x, y, r: integer); begin setpencolor(clgreen); line(x - r, y, x, y - (r * 2)); line(x, y - (r * 2), x + r, y); line(x - r, y, x + r, y); floodfill(x, y - 2, clgreen); Shar(x, y - (r div 2) - (r div 3)); Shar(x - (r div 4), y - (r div 4)); Shar(x + (r div 4), y - (r div 4)); Shar(x - r, y + 10); Shar(x + r, y + 10); end; procedure Gir(x, y, r: integer); var i: integer; begin i := -r; while i <= r do begin if (getpixel(x + i, y + i) = clgreen) then begin setbrushcolor(clrandom); setpencolor(clrandom); circle(x + i, y + i, 5); end; inc(i, 10); end; end; begin SetWindowTitle('С Новым Годом!'); setwindowsize(400, 500); lockdrawing; x := 200;y := 200; r := 25; for i := 1 to 20 do begin clearwindow; Triangle(x, y, r); Triangle(x, y + 100, r + 30); Triangle(x, y + 200, r + 50); setpencolor(clbrown); setbrushcolor(clbrown); rectangle(180, 400, 220, 440); Gir(200, 200, 70); Gir(200, 300, 100); Gir(200, 400, 150); sleep(50); redraw; inc(r, 2); end; end.
Объяснение кода листинга программы
- В первой процедуре Shar(xx, yy) используется функция circle для рисования шара с радиусом 10 в заданной точке с координатами (xx, yy). Затем с помощью функции setbrushcolor и setpencolor меняются цвета кисти и пера на красный и зеленый соответственно. Далее, с помощью функции circle рисуются три меньших шара с радиусом 5 в вершинах равностороннего треугольника, сориентированного по координатам (x, y) и направленного вниз. Функция floodfill используется для заливки внутреннего треугольника зеленым цветом. Наконец, с помощью функции Shar рисуются три меньших шара в вершинах равностороннего треугольника, сориентированного по координатам (x, y) и направленного вниз.
- Во второй процедуре Gir(x, y, r) с помощью цикла while и операции getpixel проверяется каждый пиксель в прямоугольнике размером 2r+10 на 2r+10, начиная с (x, y). Если пиксель зеленый, то с помощью функции setbrushcolor и setpencolor меняются цвета кисти и пера на случайный цвет, и с помощью функции circle рисуется круг радиусом 5 в этом пикселе.
- В основной части программы с помощью функции SetWindowTitle устанавливается заголовок окна
С Новым Годом!
. Затем с помощью функции setwindowsize устанавливается размер окна 400 на 500 пикселей. С помощью функции lockdrawing блокируется рисование, чтобы избежать наложения графических объектов. Затем устанавливаются начальные координаты (x, y) и радиус r равный 25. В цикле for от 1 до 20 выполняются следующие действия:- Очищается окно.
- Рисуется треугольник с радиусом r.
- Рисуется треугольник с радиусом r+30.
- Рисуется треугольник с радиусом r+50.
- С помощью функции setpencolor и setbrushcolor меняются цвета кисти и пера на коричневый.
- Рисуется прямоугольник размером 40 на 140 в левом нижнем углу окна.
- Рисуется круг радиусом 70 в точке (200, 200).
- Рисуется круг радиусом 100 в точке (200, 300).
- Рисуется круг радиусом 150 в точке (200, 400).
- С помощью функции sleep задерживается выполнение программы на 50 миллисекунд.
- С помощью функции redraw перерисовывается окно.
- Увеличивается значение радиуса r на 2.
- Цикл завершается.
- Программа заканчивается вызовом функции halt, которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет кнопку
Остановить
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д