Категории
Самые читаемые
onlinekniga.com » Детская литература » Прочая детская литература » Python для детей. Анимация с черепашьей графикой - Виктор Рабинович

Python для детей. Анимация с черепашьей графикой - Виктор Рабинович

Читать онлайн Python для детей. Анимация с черепашьей графикой - Виктор Рабинович

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 2 3 4 5 6 7 8
Перейти на страницу:
alt="" src="images/_14.jpg"/>

Следующий пример,который мы рассмотрим, использует два разных базовых примитива для создания анимации: квадрат и круг. Используя эти примитивы, построрим движущийся автомобиль. Для построения испульзуем два базовых примитива: квадрат и круг. В таблице 13 показан соответствующий код. Рассмотрим структуру программы. Строка, обозначенная индексом #1, определяет пустой лист базовых примитивов. Строка #2 задает форму четырех примитивов: 2 квадрата и два круга. Строка #3 задает массив, определяющий цвета примитивов. Цикл <for i in range (4):> заполняет пустой лист примитивами, причем строка #6 t[i].shapesize(dx[i],dy[i]) (i=0,3) преобразуют квадраты в прямоугольники, i=1 и i=2 соответствуют кругам с удвоенным размером посравнению с исходным размером. Цикл while True с кодами внутри бесконечного цикла определяют дбижение автомобиля вдоль горизонта. Несколько статических кадров анимации показаны в правой части таблицы 13.

Прыгающий клоун

В этом примере участвуют следующие базовые примитивы черепашьей графики: круг, квадрат и треугольник. Используя эти три примитива, а также подобрав занятную логику их движения можно создать интересную композицию. Код программы представлен в таблице 14. Представленная программа состоит из 4-ех основных блоков. Коды, расположенные между линиями 1 и 2 определяют функцию которая вводит обьекты (примитивы) черепашьей графики. Каждый обьект имеет следующие параметры:

primitive – параметр в виде строки, который может принимать названия основных базовых форм черепашьей графики(черепашка, квадрат, круг, треугольник);

w, h – ширина и высота обьекта. Если величины w и h отличаются друг от друга, квадрат превращается в прямоугольник, круг – в овал, равносторонний треугольник – в равнобедренный, черепачка- растягивается вдоль горизонтальной и вертикальной осей;

параметр clr определяет цвет обьекта;

x,y – координаты, определяющие положение обьекта на координатной плоскости.

Таблица 14

Строки, расположенные между цифрами 2 и 3 конкретизируют все параметры обьектов для создания нашего клоуна. Обьектами со цвоими цветами и положением на плоскости являются, как было сказано выше, квадрат, круг и треугольник.Строки программы между цифрами 3 и 4 задают анимацию собранного клоуна: клоун мигает глазами, его шляпа подпрыгивает, он разводит руки. Все движения периодически повторяются, создавая анимационный эффект.

Анимация изображений, построенных из полигонов

Для того, чтобы осуществить анимацию (движение) фигуры, рассмотренной в предыдущем параграфе, построенной из нескольких обьектов, необходимо применить команды движения к каждому из составляющих фигуру обьекту. Сейчас мы разберем варианты построения изображений на основе простых геометрических фигур. Такой метод позволит сформировать изображение, состоящее из нескольких геометрических фигур как один обьект и применить к нему существенно меньшее количество команд движения, упростив программу. Начнем с простешей фигуры: прямоугольника.

Анимация прямоугольника

Как мы уже говорили анимация работает как серия изображений, которые немного отличаются. Чтобы создать анимацию перемещения прямоугольника вправо, нам необходимо нарисовать прямоугольник, затем обозначить его как один обьект. Сделав это, мы сможем применить к прямоугольнику как к единому обьекту, все команды библиотеки turtle. В таблице 15 показана простая программа, реализующая нашу идею. Пoясним подробно код таблицы. Код t.begin_poly() между линиями 1 и 2 дает команду на создание полигона (в нашем случае прямоугольника). К нему (пямоугольнику) затем можно будет применять все команды библиотеки, так же, как мы применяем их к простым примитвам таким как turtle, квадрат круг, треугольник и т. д. Все коды, расположенные между строками обозначенными 1 и 2, создают полигон (в нашем случае прямоугольник). Длее, полученный прямоугольник добавляется к экрану(строка 4). Код линии 3 поворачивает полученный обьект-прямоугольник на 90 градусов. Теперь мы получили новый turtle-обьект (линия 5), к которому применимы все команды библиотеки. Обратим внимание на то, что в этом случае обьект-прямоугольник можно поворачивать (как видно из изображений, показанных в правой части таблицы) а также изменять размер полученного изображения с использованием команды t.shapesize (размер изображения). Несколько последовательных положений прямоугольника обьединенных в одном кадре с использованием команды t.stamp()), показаны на изображениях правой части таблицы.

Таблица 15

Пульсирующее сердце

Применим указанный прием для воспризведения пульсирующего сердца. Соответствующий скрипт программы показан в таблице 16.

Таблица 16

Скрипты между линиями 1 и 2 создают форму сердца из полигона с использованием основных команд черепашьей графики и базовых команд языка Python. Строки между линиями 2 и 3 определяют полученную геометрию формы сердца как обьект черепашьей графики. Коды между линиями 3 и 4 определяют бесконечный цикл, в котором размер сердца периодически изменяется, то увеличиваясь, то уменьшаясь.

Движущийся автомобиль

Используя указанный метод, можно построить более сложную геометрическую форму а затем применить к полученной форме все команды черепашьей графической библиотеки. Построим схематическое изображение формы автомобиля по заданным координатам вершин. Наш автомобиль будет состоять из следующих компонентов: кузов из двух полигонов (четырехугольник и трапеция), а также первое и второе колеса. Поясним коды таблицы 17. Команда, обозначенная линией с индексом *, обьявляет создание сложного обьекта, состоящего из нескольких полигонов. Первый четырехугольник (часть кузова автомобиля) задается кодами между линиями 1 и 2. Вершины первого многоугольника обозначены переменными pos1, pos2, pos3, pos4, сам полигон определяется переменной poly1. Коды между линиями 1 и 2 Строка с индексом ** добавляет первый полигон в геометрическую форму, которую мы хотим создать. Аналогично добавляется второй полигон с вершинами pos5, pos6, pos7 и pos8 (коды между линиями 2 и 3). Создав два полигона, формирующих кузов машины, добавляем первое и второе колесо с использованием кодов begin_poly() и end_poly() (коды между линиями 3 и 4). Создав автомобиль с использованием полигонов, определяем обьект car=turtle.Turtle(shape='car') с помощью черепашьей графики (коды между линиями 4 и 5). Движение автомобиля определяется строками, обозначенными индексами #6, #7, #8, через функцию(линия ***) motion с параметром angle. Несколько статических кадров полученной анимации показаны на изображениях в правой части таблицы.

Таблица 17

Движение автомобилей вдоль холмистой дороги

В этом примере рассмотрим как создать анимацию трех автомобилей с водителями вдоль холмистой дороги. При этом используем прием прошлого примера: автомобили с водителями построены с помощью полигонов-многоугольников. Этот метод позволяет использовать почти все команды черепашьей графики, в частности повороты изображения на зданный угол а также сжатие и растяжение обьекта, конечно, в добавление к основным командам графики. Полный код и несколько статических кадров показаны в таблицах 18-1 ,18-2 и 18-3) В представленном коде выделены следующие блоки: функция для построения полигонов определяется строками между линиями 1 и2; функция для построения окружностей(колеса автомобиля и глаза водителя

1 2 3 4 5 6 7 8
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Python для детей. Анимация с черепашьей графикой - Виктор Рабинович.
Комментарии