Free

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

Text
Mark as finished
Font:Smaller АаLarger Aa

Спрайт анимация на основе библиотеки

Python

-

Turtle

В предыдущих разделах мы познакомились с принципами анимации, создаваемой с помощью стандарных примитивов, встроенных в библиотеку turtle. Теперь научимся создавать проекты с использованием обьектов-изображений, называемых спрайтами, при этом существенно расширив возможности анимации. Обьектами могут быть животные , люди, цветы, фрукты и т. д. Каждый спрайт представляет собой неподвижную картинку (изображение). Быстро сменяющая друг друга серия этих картинок составляет анимацию и называется спрайтовой анимацией. Создавая программу, мы заставляем спрайты пермещатюся по экрану а также взаимодействовать друг с другом, например, направление движения одного обьекта может изменяться при соприкосновении с другим обьектом либо, характер движения или цвет обьекта изменяется по команде от другого обьекта. Действия, которые выполняет спрайт, полностью зависят от написанного кода. Один проект может иметь несколько спрайт(sprite)-изображений, каждое из которых должно быть введено в программу с использованием соответствующих файлов. Изображения можно выбрать из Интернета, либо нарисовать самому, либо воспользоваться спарйтами библиотеки популярного в настоящее время языка Scratch, предназначенного для обучения детей. Библиотека языка Scratch содержит много спрайт-изображений, каждое из которых имеет несколько костюмов. Каждый из костюмов фактически является отдельным изображением, отличающимся от предыдущего таким образом, что используя все костюмы в совокупности с помощью кодов программы можно созадвать анимацию изображений. Когда студент хорошо освоился с основами языка Scratch, в котором все команды представлены в виде блоков, появляется желание создать аналогичную программу с помощью текстового языка. Приходит на помощь язык программирования Python. Язык содержит множество различных библиотек, многие из которых используются профессиональными программистами и известными компаниями для создания серьзных программ. Одной из наиболее простых библиотек языка, приспособленной для школьников 12+ и встроенной в стандартную версию языка (ее не нужно дополнительно скачивать-инстолировать), является библиотека Turtle. Большинство команд этой библиотеки идентичны блочным командам языка Scratch, и в этом ее преимущество перед другими библиотеками. Поэтому студенту, знакомому с языком Scratch нетрудно освоиться с основами языка Python. Однако, как мы видели в предыдущих разделах, библиотека Python- Turtle содержит лишь несколько стандартных изображений, которыми можно пользоваться для создания sprite-анимаций: квадрат, круг, стрелка, черепашка. Считается, что библиотека Turtle предназначена в основном для рисования геометрических фигур и анимаций с использованием shape-images этой библиотеки. Однако это не так. Простая и понятная для детей 10+ библиотека Turtle имеет в своем составе команды, позволяющие детям создавать отличные анимационные проекты, наподобие тех, которые создаются с помошью языка Scratch. Нужно лишь научиться добывать нужные нам для проекта изображения (из интернета, либо рисовать самим), научиться вводить их в программу и контролировать движения этих изображений с помощью команд библиотеки. Итак приступим.

Скольжение одиночного изображения

На первом этапе научимся передвигать единичный спрайт-изображение в заданном направлении. В качестве спрайт-изображения выберем тыквенного человечка, назовем его памкин (на английском pumpkin-тыква) . В качестве фона , на котором будет двигаться памкин, выберем пешеходный переход. Во-первых, нам надо найти и запомнить изображения памкина и фона в виде файлов в компьютере. Следует учесть, что все файлы изображений, которые используются в кодах библиотеки turtle должны иметь расширение gif. Обычно размер спрайт-изображения по горизонтали и вертикали не превышает 100-200 пикселей. Изображения фона, заполняющего экран, имеет размеры примерно 800-1200 пикселей по горизонтали и не более 750 пикселей по вертикали. Предположим, мы нашли нужное нам спрайт-изображение памкина, изображение фона и запомнили их в нужном формате(gif) в компьютере. Теперь, используя коды библиотеки turtle, создаем программу (скрипт) которая передвигает памкина вдоль горизонта на фоне изображения-улицы.

В таблице 21 показан соответствующий скрипт.

Таблица 21


Поясним работу представленной программы. Первая строка вызывает библиотеки языка Python turtle и time, т. е. Теперь мы можем пользоваться любой командой этих библиотек. Вторая строка определяет обьект Screen (обозначили его с помощью переменной wn), далее установили размер экрана (по горизонтали 1000 пихелей, по вертикали 700 пихелей) , ввели изображение фона-улицы, а затем добавили спрайт-изображение памкина в окно экрана: файл man.gif. Затем определили обьект с именем man: (man=turtle.Turtle('man.gif')). Теперь можем применять к введенному обьекту man все команды библиотеки графической библиотеки turtle. Запустив программу, вы увидите как наш обьект-изображение скользит по экрану.

Несколько существенных замечаний, касающихся указанной выше программы:

Файлы изображений должны располагаться в той же директории (folder), что и основной script(код) программы.

Сами изображения должны быть расположены на прозрачном фоне, иначе фон изображения наложится на основной фон экрана и исказит его.

Для того, чтобы обеспечить все приведенные требования к правильной настройке изображения, воспользуемся следующими рецомендациями: находим интересующее нас изображение в интернете, копируем его с помощью команды Ctrl+c, открываем один из редакторов, например, редактор Paint.net (предварительно бесплатно скачав-установив его на свой компьютер) и, используя команду Ctrl+v, получаем выбранное нами изображение на экране редактора. Для того, чтобы изменить размеры изображения нужно использовать опцию Image->Resize для того, чтобы сделать прозрачный фон. Затем следует запомнить полученное изображение в виде файла с расширением gif и поместить его в директорию, где расположен основной файл с кодами языка. Обратите внимание на то чтобы имя файла изображения в директории совпадало с именем файла изображения в коде исполнительного файла. После запуска программы в 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 изображений памкина зеркально отраженных по сравнению с изображениями левой таблицы. Эти изображения «работают», когда памкин идет справа налево.