Меню
Разработки
Разработки  /  Информатика  /  Уроки  /  6 класс  /  Простая анимация на языке программирования PascalABC

Простая анимация на языке программирования PascalABC

Материал для внеурочной деятельности в 6 классе. Программирование с помощью языка PascalABC. Создание эффекта анимации за счёт смены четырёх изображений, бегущая, по дороге с камнями, собака за падающим листком. Знакомство с декартовой координатой. Рисование линий, дуг, прямоугольника. Использование цикла с параметром, датчика случайных чисел. Работа с градацией цвета rgb, выбор палитры.

07.05.2019

Содержимое разработки


Простая анимация на языке программирования PascalABC


Среда программирования: PascalABC

Одно из заданий внеурочной деятельности в 6 классе, демонстрация простой анимации за счёт смены четырёх изображений, с помощью модуля GraphABC.

В качестве примера выбраны в декартовой координате четыре разных позиции объектов: собака, туча, лист, дорога с камнями. Для этого нам понадобится следующие инструменты:

Процедура ClearWindow (color); - очищает графическое окно указанным цветом, после этого выполняются команды следующего рисунка.

Процедура sleep(n); - экранная задержка, позволяет замедлить смену одного рисунка на другой.

Процедура цикла с параметром for j:=0 to n do и random(n)+p задаёт выбор случайным образом координат x и y для рисования чёрточек на дороге.

Сначала задаём количество смены объектов. Для упрощения это цикл от 1 до 1. Разграничим экранную страницу на две части, небо и дорогу. На небе изобразим тучу используя оператор аrc(x,y,r,a1,a2) (рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX), закрасим её, на дороге лежат камни. Рисуем падающий лист в основном оператором Line(x1,y1,x2,y2) (рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2) и LineTo(x,y) (рисует отрезок от текущего положения пера до точки (x,y); координаты пера при этом также становятся равными (x,y)).

USES graphabc ;

var i,j,x,y: integer ;

begin

setwindowsize(325,310); //размер экрана

setpenwidth(3); // толщина пера

for i:=1 to 100 do //количество воспроизведенных рисунков

begin

floodfill(5,5,rgb(97,202,248)); // закрашиваем небо

setpencolor(rgb(220,242,248)); //выбор цвета облака

// облако

arc(90,1,20,178,310);

arc(125,1,28,198,340);

arc(160,1,15,204,361);

floodfill(130,10,rgb(237,249,252));//закрашиваем облако

//рисование листа с выбор цвета и толщены кисти

setpencolor(rgb(0,0,0));

setpenwidth(1);

line(298,32,290,40);

lineto(285,40);

lineto(280,45);

lineto(284,47);

lineto(278,56);

lineto(283,58);

lineto(272,62);

lineto(287,59);

lineto(289,57);

lineto(292,56);

lineto(297,46);

lineto(290,40);

line(290,40,285,54);

floodfill(285,43,rgb(28,183,35));

//дорога с камнями и чёрточками

rectangle(0,220,326,310);

floodfill(285,230,rgb(224,185,137));

setpenwidth(3);

arc(90,249,10,5,180);

line(80,250,100,249);

floodfill(90,247,rgb(142,74,51));

arc(140,230,7,5,180);

line(134,231,147,230);

floodfill(140,228,rgb(142,74,51));

arc(250,239,12,5,180);

line(238,241,262,240);

floodfill(250,237,rgb(142,74,51));

for j:=0 to 18 do

begin

x:= random(315)+3;y:=random(92)+222;

line(x,y,x+random(9),y)

end;

// рисование собаки №1

setpenwidth(3);

setpencolor(rgb(131,40,24));

line(50,2,40,40);

lineto(50,90);

lineto(50,100);

lineto(40,120);

lineto(40,140);

lineto(20,170);

lineto(20,210);

lineto(30,220);

lineto(40,220);

lineto(50,210);

lineto(40,200);

lineto(40,180);

lineto(50,170);

lineto(50,200);

lineto(60,210);

lineto(70,210);

lineto(80,200);

lineto(70,190);

lineto(70,170);

lineto(100,150);

lineto(50,170);

lineto(100,150);

lineto(130,160);

lineto(160,160);

lineto(170,200);

lineto(170,210);

lineto(180,220);

lineto(200,210);

lineto(190,200);

lineto(190,150);

lineto(200,140);

lineto(200,190);

lineto(210,200);

lineto(200,210);

line(200,140,220,120);

lineto(230,70);

lineto(270,60);

lineto(270,30);

lineto(250,30);

lineto(240,10);

lineto(210,2);

lineto(190,10);

lineto(180,20);

lineto(180,50);

lineto(170,80);

lineto(140,90);

lineto(110,80);

lineto(90,80);

lineto(70,90);

lineto(60,80);

lineto(50,40);

lineto(50,2);

line(190,30,190,40);

lineto(200,60);

lineto(220,60);

lineto(210,30);

lineto(210,20);

line(230,20,240,30);

lineto(230,40);

lineto(220,30);

lineto(230,20);

line(260,30,260,40);

lineto(270,40);

setpencolor(rgb(249,69,60));

line(240,60,250,60);

lineto(270,50);

floodfill(190,100,rgb(225,121,17));

floodfill(60,180,rgb(243,173,103));

floodfill(195,180,rgb(243,173,103));

floodfill(230,30,rgb(116,243,250));

floodfill(265,35,rgb(0,0,0));

sleep(150);

clearwindow;

// рисование смещённых камней, облаков, листика и собаки №2

floodfill(5,5,rgb(97,202,248));

setpencolor(rgb(220,242,248));

arc(75,1,20,178,310);

arc(110,1,28,198,340);

arc(145,1,15,204,361);

floodfill(130,10,rgb(237,249,252));

setpencolor(rgb(0,0,0));

setpenwidth(1);

line(310,52,302,60);

lineto(297,60);

lineto(292,65);

lineto(296,67);

lineto(290,76);

lineto(295,78);

lineto(284,82);

lineto(299,79);

lineto(301,77);

lineto(304,76);

lineto(309,66);

lineto(302,60);

line(302,60,297,74);

floodfill(297,63,rgb(28,183,35));

rectangle(0,263,326,310);

floodfill(297,265,rgb(224,185,137));

setpenwidth(3);

arc(70,300,13,5,180);

line(60,301,80,300);

floodfill(70,298,rgb(142,74,51));

arc(120,282,8,5,180);

line(114,283,147,282);

floodfill(120,280,rgb(142,74,51));

arc(230,300,9,5,180);

line(218,302,262,301);

floodfill(230,299,rgb(142,74,51));

for j:=0 to 10 do

begin

x:= random(300)+13;y:=random(92)+265;

line(x,y,x+random(11),y)

end;

setpencolor(rgb(131,40,24));

line(10,2,10,40);

lineto(20,80);

lineto(50,110);

lineto(40,130);

lineto(40,140);

lineto(50,160);

lineto(50,180);

lineto(30,200);

lineto(30,230);

lineto(20,240);

lineto(30,250);

lineto(40,250);

lineto(60,240);

lineto(60,210);

lineto(65,200);

lineto(80,190);

lineto(90,180);

lineto(80,190);

lineto(80,220);

lineto(130,260);

lineto(140,260);

lineto(150,250);

lineto(140,240);

lineto(130,240);

lineto(110,220);

lineto(110,180);

lineto(140,190);

lineto(170,190);

lineto(180,190);

lineto(190,200);

lineto(200,210);

lineto(230,220);

lineto(270,250);

lineto(280,240);

lineto(280,230);

lineto(250,200);

lineto(220,190);

lineto(220,160);

lineto(240,150);

lineto(250,160);

lineto(230,130);

lineto(220,110);

line(250,160,260,150);

lineto(260,130);

lineto(250,90);

line(260,150,270,160);

lineto(280,160);

lineto(270,150);

line(280,160,290,160);

lineto(310,150);

lineto(310,140);

lineto(300,130);

lineto(300,140);

lineto(310,150);

line(300,130,290,120);

lineto(280,90);

lineto(270,80);

lineto(250,70);

lineto(240,70);

lineto(220,80);

lineto(210,100);

lineto(180,110);

lineto(140,110);

lineto(110,100);

lineto(60,100);

lineto(40,90);

lineto(20,60);

lineto(10,10);

line(170,190,170,210);

lineto(190,250);

lineto(210,260);

lineto(220,250);

lineto(200,230);

lineto(190,200);

line(270,100,260,110);

lineto(270,120);

lineto(280,110);

lineto(270,100);

setpencolor(rgb(249,69,60));

line(270,150,280,160);

floodfill(190,120,rgb(225,121,17));

floodfill(200,240,rgb(243,173,103));

floodfill(270,110,rgb(116,243,250));

floodfill(305,140,rgb(0,0,0));

sleep(150);

clearwindow;

// рисование смещённых камней, облаков, листика и собаки №3

floodfill(5,5,rgb(97,202,248));

setpencolor(rgb(220,242,248));

arc(55,0,18,178,315);

arc(90,0,24,198,347);

arc(125,0,11,204,361);

floodfill(100,5,rgb(237,249,252));

setpencolor(rgb(0,0,0));

setpenwidth(1);

line(310,62,302,70);

lineto(297,70);

lineto(292,75);

lineto(296,77);

lineto(290,86);

lineto(295,88);

lineto(284,92);

lineto(299,89);

lineto(301,87);

lineto(304,86);

lineto(309,76);

lineto(302,70);

line(302,70,297,84);

floodfill(297,73,rgb(28,183,35));

rectangle(0,243,326,310);

floodfill(297,265,rgb(224,185,137));

setpenwidth(3);

arc(50,300,13,5,180);

line(40,301,60,300);

floodfill(50,298,rgb(142,74,51));

arc(100,282,8,5,180);

line(94,283,127,282);

floodfill(100,280,rgb(142,74,51));

arc(210,300,9,5,180);

line(198,302,242,301);

floodfill(210,299,rgb(142,74,51));

for j:=0 to 20 do

begin

x:= random(300)+13;y:=random(92)+248;

line(x,y,x+random(11),y)

end;

setpencolor(rgb(131,40,24));

line(120,20,110,20);

lineto(80,30);

lineto(70,40);

lineto(60,80);

lineto(70,90);

lineto(50,100);

lineto(40,120);

lineto(40,140);

lineto(30,140);

lineto(20,160);

lineto(1,170);

lineto(10,180);

lineto(50,160);

lineto(60,160);

lineto(100,140);

lineto(120,150);

lineto(170,160);

lineto(190,160);

lineto(250,200);

lineto(260,200);

lineto(270,180);

lineto(260,180);

lineto(230,160);

lineto(220,120);

lineto(240,90);

lineto(270,90);

lineto(280,80);

lineto(290,60);

lineto(290,40);

lineto(270,40);

lineto(260,30);

lineto(240,20);

lineto(220,20);

lineto(210,30);

lineto(190,30);

lineto(160,40);

lineto(180,60);

lineto(200,60);

lineto(210,50);

lineto(190,80);

lineto(150,90);

lineto(110,80);

lineto(80,80);

lineto(70,70);

lineto(80,40);

lineto(120,20);

floodfill(190,120,rgb(225,121,17));

line(80,150,90,160);

lineto(90,190);

lineto(120,210);

lineto(140,200);

lineto(110,180);

lineto(120,160);

lineto(120,150);

line(190,160,190,170);

lineto(180,180);

lineto(170,170);

lineto(160,170);

lineto(150,180);

lineto(170,190);

lineto(180,190);

lineto(220,180);

line(250,40,240,50);

lineto(250,60);

lineto(260,50);

lineto(250,40);

line(290,50,280,40);

floodfill(110,160,rgb(243,173,103));

floodfill(190,180,rgb(243,173,103));

floodfill(250,50,rgb(116,243,250));

floodfill(285,42,rgb(0,0,0));

setpencolor(rgb(249,69,60));

line(280,80,250,80);

setpencolor(rgb(131,40,24));

sleep(150);

clearwindow;

// рисование смещённых камней, облаков, листика и собаки №4

floodfill(5,5,rgb(97,202,248));

setpencolor(rgb(220,242,248));

arc(15,1,20,178,310);

arc(50,1,28,198,340);

arc(85,1,15,204,361);

floodfill(70,10,rgb(237,249,252));

setpencolor(rgb(0,0,0));

setpenwidth(1);

line(310,52,302,60);

lineto(297,60);

lineto(292,65);

lineto(296,67);

lineto(290,76);

lineto(295,78);

lineto(284,82);

lineto(299,79);

lineto(301,77);

lineto(304,76);

lineto(309,66);

lineto(302,60);

line(302,60,297,74);

floodfill(297,63,rgb(28,183,35));

rectangle(0,233,326,310);

floodfill(297,265,rgb(224,185,137));

setpenwidth(3);

arc(20,300,13,5,180);

line(10,301,30,300);

floodfill(20,298,rgb(142,74,51));

arc(70,282,8,5,180);

line(64,283,97,282);

floodfill(70,280,rgb(142,74,51));

arc(170,300,9,5,180);

line(158,302,192,301);

floodfill(170,299,rgb(142,74,51));

for j:=0 to 17 do

begin

x:= random(300)+13;y:=random(92)+248;

line(x,y,x+random(19)+3,y)

end;

setpencolor(rgb(131,40,24));

line(80,30,70,50);

lineto(70,80);

lineto(80,120);

lineto(70,130);

lineto(60,150);

lineto(40,160);

lineto(30,160);

lineto(0,190);

lineto(10,200);

lineto(20,200);

lineto(40,180);

lineto(60,180);

lineto(80,160);

lineto(80,150);

lineto(90,140);

line(60,180,30,210);

lineto(30,220);

lineto(40,220);

lineto(80,200);

lineto(110,200);

lineto(130,180);

line(120,190,210,170);

lineto(220,180);

lineto(300,150);

lineto(310,140);

lineto(310,130);

lineto(300,130);

lineto(280,140);

lineto(270,140);

lineto(240,150);

lineto(270,130);

lineto(290,120);

lineto(290,110);

lineto(270,110);

lineto(250,120);

lineto(250,130);

lineto(240,150);

line(250,120,250,110);

lineto(240,100);

lineto(240,80);

lineto(250,70);

lineto(260,70);

lineto(280,60);

lineto(280,50);

lineto(260,60);

line(280,50,290,40);

lineto(290,30);

lineto(280,20);

lineto(260,20);

lineto(260,40);

lineto(250,30);

lineto(260,20);

lineto(250,10);

lineto(230,10);

lineto(200,20);

lineto(190,40);

lineto(190,60);

lineto(180,80);

lineto(170,70);

lineto(180,30);

lineto(200,20);

line(190,60,190,80);

lineto(170,100);

lineto(150,110);

lineto(120,110);

lineto(100,120);

lineto(90,110);

lineto(80,80);

lineto(80,30);

line(200,50,200,60);

lineto(210,80);

lineto(220,80);

lineto(230,60);

lineto(230,40);

lineto(220,30);

floodfill(255,30,rgb(116,243,250));

floodfill(230,30,rgb(225,121,17));

floodfill(270,120,rgb(243,173,103));

floodfill(180,50,rgb(225,121,17));

setpencolor(rgb(249,69,60));

line(260,60,280,50);

sleep(150);

clearwindow;

setpencolor(rgb(131,40,24));

end;

end.



-80%
Курсы дополнительного образования

Создание динамических веб-страниц с помощью PHP и MySQL

Продолжительность 72 часа
Документ: Cвидетельство о прохождении курса
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Простая анимация на языке программирования PascalABC (830.25 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт