Продолжая использовать наш сайт, вы даете согласие на обработку файлов cookie, которые обеспечивают правильную работу сайта. Благодаря им мы улучшаем сайт!
Принять и закрыть

Читать, слущать книги онлайн бесплатно!

Электронная Литература.

Бесплатная онлайн библиотека.

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


Помоги проекту - поделись книгой:

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

Анимация ходьбы с несколькими изображениями

В таблице 22 представлен код, который демонстрирует как памкин переходит дорогу перебирая ногами. Код использует 10 спрайтов-изображений памкина с разным положением ног.

Таблица 22


В приведенной программе 10 изображений человечка-памкина введены в программу 10-ю файлами в виде Python-list (image=[…]) и затем добавлены на экран с использованием команды wn.addshape(image[i]), где i пробегает значения от 0 до 9 включительно. Движение памкина осуществляется с помощью цикла (for m in range(60):). Целое число m1 пробегает только 10 значений ( 0,1,2…9), в то время как величина i изменяется от 0 до 60 включительно. При этом памкин проходит весь путь от левой части экрана до конца правой. Файлы с изображениями памкина, изображение улицы а также файл-программу можно скачать по адресу:

https://github.com/victenna/Pumpkin-man

Eсли вы хотите, чтобы после первого прохода по перекрестку памкин возвращался обратно влево и вновь повторял тот же маршрут и так бесконечное количество раз, программа может быть изменена следующим образом, как показано в таблице 23 (Код показан в левой колонке):

Таблица 23


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

Дальнейшим шагом является код программы (правая колонка в таблице), которая реализует ходьбу памкина слева направо, затем справа налево и опять слева направо и справа налево. Для того, чтобы реализовать этот код пришлось дополнительно ввести в программу 10 изображений памкина зеркально отраженных по сравнению с изображениями левой таблицы. Эти изображения «работают», когда памкин идет справа налево.

Особенности исполнения кодов черепахи при работе с изображениями в библиотеке

turtle

.

Применим к встроенной в библиотеку изображению черепашки команду left(45). При этом голова черепахи повернется на 45 градусов, и последующая за ней команда fd(100) сдвинет черепаху на расстояние 100 пикселей под углом 45 к горизонту. В том случае, когда мы используем в программе изображение, добавленное командой wn.addshape(image), повернуть изображение вокруг своей оси нельзя. Но последующая за командой left(45) команда fd(100) сдвинет изображение на 100 пихелей в направлении под углом 45 градусов к горизонту также как и в случае со стандартным изображением черепахи. Аналогичное правило действует в отношении поворота вправо. На нижнем рисунке видно: слева голова черепашки повернулась при использовании команды left(45), на правом изображении памкин не повернулся на 45 градусов, однако и черепашка и памкин прошли 200 пикселей в направлении под 45 градусов к горизонтали.


Отметим также, что команда shapesize(…) в случае с избражениями, взятыми, например, из интернета, не работают. Если необходимо увеличить размер изображения или повернуть его на какой-либо угол, необходимо вначале создать необходимое вам изображение с изпользованием, например библиотеки PIL языка Python а затем ввести это изображение в программу.

Видео, демонстрирующее пешехода памкина при использовании кода в правой части показанной выше таблицы, расположено по адресу:

https://youtu.be/K3OLvrmDTHI

Астронавт в открытом космосе

Сценарий этого анимационного проекта следующий: астронавт летит в открытом космосе вблизи космического корабля. Код и пояснения приведены в таблице 24

Таблица 24


В показанном примере изображение окна экрана (звездного неба) а также астронавта и космического корабля вводятся в программу с помощью трех файлов: moonsky.gif, astr.gif и shuttle.gif. Движение корабля и космонавта определяются кодами между линиями 1 и 2, каждое новое вхождение космического корабля в зону окна задается случайным углом наклона (последняя строка кода). Для того,чтобы астронавт не удалялся от корабля, в процессе работы программы определяются координаты корабля X,Y, а затем позиция космонавта определяется строкой кода Astro.setposition(X+15,Y+115). Файлы с необходимыми изображениями а также файл с программой можно скачать по адресу:

https://github.com/victenna/Astronaut-in-free-space

Видео файл с полученной анимацией можно посмотреть по адресу:

https://youtu.be/vbO7jR3zMho

Ракета вращается вокруг Земли

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


В таблице 25 показан скрипт программы:

Таблица 25


В отличие от предыдущего примера в представленном коде ракетоплан создается с использованием 6 полигонов с вершинами, обозначенными в строках #1-#6. Каждый из полигонов окрашен в свой цвет, а все вместе образуют ракетоплан, который вращается вокруг земли и подчиняется всем командам черепашьей графики. Применяя к построенному ракетоплану функции поворота(left(),right()), используемые в черепашьей графике, создаем еффект его вращения вокруг Земли. Ниже на фоне Земли показан ракетоплан, построенный с помощью полигонов кода.


Файл с изображениeм Земли, а также файл с программой можно скачать по адресу:

https://github.com/victenna/Rockets-around-Earth

Планеты солнечной системы

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

Таблица 26


Полет воздушных шариков

Программа реализует следующий анимационный сценарий. Мальчик, пританцовывая, выпускает из рук шарик, который поднимается вверх, постепенно увеличиваясь в обьеме, и долетев до верхней части экрана лопается. Затем все действие повторяется вновь и вновь, создавая анимационное видео. Несколько кадров анимации представлено в правой части таблиц 27-1 и 27-2.

Таблица 27-1


Таблица 27-2(продолжение таблицы 27-1)


Поясним основные ключевые блоки программы. Картинка на экране, на фоне которой мальчик запускает вверх шарик, определяется файлом строки с номером 1. Между строками 2 и 3 расположены коды, задающие списки с цветами шариков а также изображения лоскутов лопнувших шариков. Между линиями 3 и 4 расположены коды, определяющие, танцующего мальчика. Коды между линиями 4 и 5 вводят в программу 5 лоскутов лопнувших шариков и изображение нитки, на которой држится шарик. Очень важными являются коды между линиями 5 и 6. Эти коды служат для определения функции, которая вводит следующие обьекты: мальчик, шарик, лоскуты лопнувшего шарика и нить, на которой держится шарик. Все 5 обьектов заданы кодами между линиями 6 и 7. Наконец, коды между линиями 8 и 9 определяют движение шарика вверх а также анимацию движений мальчика с помощью соответствующих спрайтов. Файлы изображений можно скачать поадресу:

https://github.com/victenna/Balloon

Уличное движение

Пример демонстрирует использование нескольких спрайтов –изображений для создания анимации движения автомобилей вдоль улицы. При этом окно экрана-сцена также является движущимся изображением, которое усиливает анимационный эффект. В таблице 28 приведен соответствующий код программы

Таблица 28


Поясним работу программы. Скрипты функции object, расположенные между линиями 1 и 2, описывают изображения, которые затем вводятся в программу с помощью кодов между линиями 2 и 3. Функция object имеет следующие параметры: файл изображения и координаты изображения на координатной плоскости экрана. В качестве обьектов используются: изображение улицы (файл с изображением улицы 'street.gif',-500,0; файл с изображением первой машины 'car_1.gif'; файл с изображением второй машины 'car_2.gif'; файл с изображением третьей машины 'car_2.gif'. и Все изображения имеют свои начальные координаты, которые задаются параметрами функции X, Y. Движение автомобилей и перемещение улицы определяется скриптами, расположенными между строками 3 и 4. С правой стороны в таблице показаны несколько кадров полученной анимации. Файлы изображений, используемые в программе могут быть скачаны с сайта:

https://github.com/victenna/Cars-on-a-road

Пешеходный переход

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

Несколько кадров сценария, реализованного с помощью этой программы, приведено ниже





Поделиться книгой:

На главную
Назад