Za darmo

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

Tekst
Oznacz jako przeczytane
Czcionka:Mniejsze АаWiększe Aa

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

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 спрайт-изображений, отличающихся положением ног, для имитации движения); автомобиль(один спрайт); светофор с тремя спрайтами для создания переключающегося света (красный, желтый и зеленый); знак, обозначающий для пешехода необходимость переходить улицу либо стоять, когда автомобиль движется по улице (два спрайта).

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






Полный скрипт программы показан ниже в таблицах 29-1 и 29-2

Таблица 29-1



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



Работа блоков, входящих в состав программы, следующая:

Коды между блоками 1 и 2 определяют списки изображений, которые используются в программе;

Коды между блоками 2 и 3 добавляют к экрану указанные изображения;

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

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

 




Файлы изображений, используемые в этой программе могут быть скачаны с сайта:

https://github.com/victenna/Pedestrian-Crossing

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

https://youtu.be/zvTHDusc-H0