Таблица 2
Показанная выше анимация ограничена во времени, поскольку последний кадр соответствует номеру m в цикле, равному 599. Анимацию можно сделать бесконечной во времени, например, изменив код цикла как показано в таблице 3
Таблица 3
Левая часть таблицы соответствует движению черепахи слева направо, причем после окончания каждого цикла черепаха, прячется, возвращается в левую часть экрана, появляется и снова движется слева направо. Правая часть таблицы соответствует движению черепахи слева направо, после окончания цикла, определяющего движение черепахи слева направо, движение происходит справа налево, затем вновь слева направо и т. д.
Отражение шарика от стенок коробки
Следующим примером является анимационный проект, демонстрирующий шарик бегающий внутри квадратной коробки и отражающийся от ее стенок. Статический кадр, демонстрирующий предлагаемый сценарий, показан на ниже.
Соответствующий скрипт, написанный на Python с использованием кодов черепашьей библиотеки, представлен в таблице 4. В качестве базового елемента черепашьей графики используем круг (строка, обозначенная цифрой #1). Программа составлена так, что шарик в виде круга непрерывно бегает внутри коробки, отражаясь от стенок по законам геометрической оптики. Непрерывное движение шарика обеспечивается бесконечным циклом, начинающимся со строки, обозначенной, как #2 (код начала цикла while True:). Строки #3, #4, #5 и #6 отвечают за отражение шарика от стенок по законам геометрической оптики. Фактически, переменные Х и Y определяют координаты стенок коробки. Координаты положения шарика по оси х и y определяются кодами t. xcor () и t. ycor () соответственно. Если шарик достигает значений Х=175 или X=-175 по оси х либо Y=175 или Y=-175 по оси y, величины перемещений шарика по соответствующим осям: dx по оси х и dy по оси y меняют знаки, приводя к изменению направления движения шарика в соответствующем направлении на 180 градусов.
Таблица 4
Вращающиеся окружности
Рассмотрим пример, демонстрирующий непрерывное вращение трех окружностей, составленных в свою очередь из кружков небольшого радиуса. Все круги разного цвета образованы с помощью базового примитива: circle. Программа, реализующая этот алгоритм, показана ниже, несколько статических кадров в правой части таблицы 5.
Таблица 5
Поясним ключевые (основные) коды приведенной программы. Строка #1 определяет три <пустых> списка (массива) обьектов: базисных черепашьих примитивов, каждый из которых будет заполнен кругами разного цвета. Строки, расположенные между номерами 2 и 3 определяют функцию для рисования кругов, строки между номерами 3 и 4 формируют три массива q [m], p [m], r [m], где m=0,1,2,317. Наконец, строки между номерами 4 и 5 задают вращение массивов: первый и третий- почасовой стрелке и второй средний против часовой стрелки. Видоизменив последнюю часть программы, можно остановить вращение окружностей, кликнув стрелкой мышки на любую часть экрана. Соответствующая измененная часть кодов показана ниже:
Таблица 6
В левой и правой части таблицы показаны части кода, которые следует поменять на строки между номерами 4 и 5 основного кода (таблица с изображениями в правой части). Скрипты левой и правой части отличаются логикой приостановки кода. В левой части остановка осуществляется по команде <break>, в правой использются логические операторы True и False. Обе части для остановки используют функцию onclick (), которая позволяет управлять останавливать вращение на экране по щелчку мыши.
Простейшая пиксель анимация
Пиксельная графика это форма цифровой графики, в которой, используя пиксели, можно создать изображение различных обьектов с помощью программного обеспечения. Пиксель это маленький квадратик на экране компьютера, который можно закрашивать тем или иным цветом. Когда маленькие разноцветные квадратики (пиксели) собраны вместе, они образуют изображение для человеческого глаза. Таким образом можно сформировать разнообразные изображения, например, изображения животных или человека. Собрав из пикселей изображение и используя компьютерную программу, можно создать анимацию, т. е. заставить изображение передвигаться, изменять выражение лица, увеличивать или уменьшать изображение в размерах и т. д. В этом разделе мы познакомимся, как с помощью простых команд Питона и черепашьей графики создать анимацию пиксельных изображений. Наш первый пример создаем простейшее изображение. Соответствующая программа представлена в таблице 7. Поясним коротко алгоритм работы программы. На первом шаге создаем пиксель на экране монитора в виде квадрата, который имеется в черепашьей библиотеке (коды между строками 1 и 2). Размер квадрата задан переменной delta. Изменяя величину delta, можно увеличивать либо уменьшать размеры пикселя и соответственно всего изображения. Расстановка пикселей на экране задается строками программы, расположенными между линиями 3 и 4. Каждая из этих строк задает одномерный список (массив) нулей и единиц. Одномерные списки row0, row1, row2,row7, являются элементами массива (списка) pixels= [row0,row1,row2,row7] (списки в списке), на английском (list). Таким образом список pixels можно можно представить в виде списка строк, каждый элемент которого является в свою очередь списком, например, чисел. Элементами каждого списка являются нули либо единицы. Для обработки и вывода такого списка, как правило, используют два вложенных цикла, как показано между линиями 6 и 7. Первый цикл перебирает номер строки, второй цикл бежит по элементам внутри строки. Например, вывести двумерный числовой список на экран построчно, разделяя числа пробелами внутри одной строки, можно так: Строки между линиями 6 и 7 определяют функцию с параметрами x и y, где x и y координаты установки первого пикселя, координаты, с которых начинается прорисовка пиксельного изображения. Обратим внимание на строку, обозначенную *. Эта строка служит для раскрашивания пикселя с координатой в ряду по номеру j и координатой в столбце по номеру i.