- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Python для детей. Анимация с черепашьей графикой - Виктор Рабинович
Шрифт:
Интервал:
Закладка:
Следующий пример,который мы рассмотрим, использует два разных базовых примитива для создания анимации: квадрат и круг. Используя эти примитивы, построрим движущийся автомобиль. Для построения испульзуем два базовых примитива: квадрат и круг. В таблице 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; функция для построения окружностей(колеса автомобиля и глаза водителя