Пример демонстрирует использование нескольких спрайтов –изображений для создания анимации движения автомобилей вдоль улицы. При этом окно экрана-сцена также является движущимся изображением, которое усиливает анимационный эффект. В таблице 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
Видео файл с полученной анимацией можно посмотреть по адресу:
Особенности анимации с большим количеством спрайт-файлов
В примерах, которые показаны ниже, используется большое количество спрайтов изображений. Все статические спрайты получены из анимационных файлов с расширением gif. Каждый такой файл может содержать десятки а иногда и сотни статических кадров, и конечно вводить в программу каждый статический файл крайне неудобно. Для ускорения ввода таких файлов в программу Python можно воспользоваться специальной программой, преобразующей gif анимационный файл в набор статических перенумерованных в определенном порядке файлов, каждый из которых имеет такое же расширение gif , пригодное для использования в основной программе. Две возможные программы для ковертирования анимационного изображения в набор статических файлов показаны в таблице 30. Для того, чтобы воспользоваться показанными программами необходимо проинсталировать на компьютер в среду Python библиотеку PIL, которая имеется в свободном интернете. С левой стороны показана программа, в которой не нужно задавать количество кадров gif файла, с правой стороны – программа, в которой необходимо задать количество кадров пробразуемого файла. Т.е., в первом случае количество кадров-изображений(frames) определяется исходным файлом, во втором случае этим количеством можно варьировать. Как в левой так и в правой программе строка с пометкой ! задает исходный анимационный файл с расширением gif, строки с пометкой !! определяют статические gif файлы.
Таблица 30
Переидем теперь к рассмотрению конкретных примеров.
Летающий орел