Урок 5.3. Нашествие кружков!
В данном уроке вы научитесь использовать несколько разных встроенных модулей для создания анимации в стиле "экранной заставки".
Вы научитесь:
- Использовать несколько модулей
- Работать со случайными (рандомными) числами
- Завершать работу программы нажатием на кнопку
- Рисовать закрашенные круги
Ваш сегодняшний проект подразумевает использование программы, которая будет добавлять на экран круги разного цвета и размера до тех пор, пока пользователь не нажмет нужную кнопку. Рисунок будет похож на анимацию для "экранной заставки" (тип программы, которая использовалась в прошлом для предотвращения "выгорания" люминофорного слоя экрана на электронно-лучевой трубке с помощью неподвижных изображений).
1. Начните с создания нового файла Python, в пункте Type: выберите "Геометрическая графика" (Geometry Graphics)
Данный шаблон предоставляет доступ к модулю ti_draw. Кроме него в работе по проекту вам также понадобятся еще два модуля: один для работы со случайными (рандомными) числами и второй - для активации "завершения работы программы нажатием кнопки". Функцию работы со случайными (рандомными) числами можно найти в модуле random, а функцию get_key - в модуле ti_system, поэтому вам нужно будет загрузить оба модуля. Только имейте в виду, что они находятся в разных пунктах меню.
Примечание для учителя: В данном уроке используется графический экран по умолчанию, то есть холст. В большинстве случаев на экранах компьютерной графики по умолчанию используется общепринятая система координат, в которой точка (0, 0) находится в верхнем левом углу, значения х располагаются горизонтально, а значения у - вертикально (сверху вниз). Такая система считается стандартной из-за специфики сохранения фрагментов экрана в память компьютера в виде последовательности байтов.
Небольшой фрагмент такого типа экрана показан на рисунке ниже:
Существует разница между координатами "пикселей" в данной конфигурации и координатами "окна", которые вы используете в приложении "Графики" (Graphs) или при применении функции set_window() в программировании на языке Python.
Самые большие различия заметны именно в вертикальной ориентации (значения у), а также в том, как это все отражается на высоте: в экране по умолчанию высота измеряется сверху вниз. В экране, созданном с помощью функции set_window(), высота измеряется снизу вверх в силу изменения ориентации оси у. Высота нужна для построения прямоугольников и дуги эллипсов.
Использование функции set_window() в середине графической программы не влияет на уже нарисованные объекты на экране. Она будет действовать только на построение новых объектов.
Функция set_window(0, 0, 0, 0) в любое время возвращает экран к "пиксельной" системе координат по умолчанию.
2. В данном проекте используйте не функцию set_window, а графическое окно по умолчанию, где точка (0,0) находится в верхнем левом углу. Размер экрана составляет 318 x 212 пикселей. Координаты четырех углов экрана и центра холста показаны на рисунке.
Существенная разница между этим экраном и тем, который создан с помощью функции set_window, заключается в следующем:
В выражении draw_rect(x, y, width, height) пара (x,y) теперь находится в верхнем левом углу, а значение высоты измеряется сверху вниз, потому что при увеличении значения y мы перемещаемся вниз по экрану.
Примечание для учителя: То же самое относится к функции draw_arc, так как она работает с прямоугольником, в который вписывается дуга.
3. Основная часть программы состоит из цикла, который прекращает работу при нажатии на кнопку esc. Выражение с оператором while можно найти в меню: menu > More Modules > TI System.
Примечание для учителя: Чтобы программа прекращала работу по нажатию любой кнопки нужно добавить условие:
while get_key()=="" (пустая строка).
4. Чтобы нарисовать круги разного цвета и размера нужно использовать несколько переменных со случайными значениями. Для кругов понадобятся значения x, y и радиус (radius), а для цветов - значения красного (red), зеленого (green) и синего (blue).
Каждую из этих шести переменных нужно прописать следующим образом:
x = randint(0,317)
Присвойте каждой переменной случайное целое число в пределах действующего диапазона. Помните об ограничениях в разрешении экрана и значениях цветов.
5. Добавьте следующие две функции: set_color() и fill_circle(). Их можно найти в меню:
menu > More Modules > TI Draw
Заметили ли вы, что слова-подсказки в аргументе, выделенные серым цветом, совпадают с названиями самих переменных? К сожалению, таким образом использовать их нельзя. Подсказка в виде слова красный (red) не является переменной "red". Вы должны ввести имена переменных вместо подсказок.
Замените подсказки в этих двух выражениях названиями переменных.
Запустите программу, когда все выполните, а затем нажмите esc, чтобы остановить ее.
Можете поэкспериментировать с диапазонами случайных чисел. Предположим, вы хотите, чтобы все круги были более красного оттенка... какие параметры вы бы изменили в настройках?
6. Этот пункт нужен для того случая, если вам захочется регулировать скорость, с которой будут появляться круги. Для этого используйте функцию sleep(), которую можно найти в модуле time. Загрузите функцию sleep из модуля time следующим образом:
from time import sleep
затем добавьте выражение sleep(1) внизу цикла (после функции fill_circle, и его нужно структурировать).
Данное выражение приостанавливает обработку команд на 1 секунду. Слишком медленно? Можно немного ускорить этот процесс или, наоборот, замедлить, используя большее или меньшее значение в выражении sleep().
7. Если вы посмотрите на рисунок из описания урока в начале, то увидите, что каждый круг имеет черную обводку. Можете ли вы сделать то же самое?
Примечание для учителя: Возможное решение: