ГРАФИКА В PYTHON
ОСНОВЫ АЛГОРИТМИЗАЦИИ
КЛЮЧЕВЫЕ СЛОВА
✦ язык программирования Питон
(Python)
✦ библиотека
✦ графический примитив
✦ переменная
✦ процедура
✦ цикл for
✦ счётчик цикла
ОБЩИЕ СВЕДЕНИЯ
Языки программирования - это формальные языки,
предназначенные для записи алгоритмов, исполнителем
которых будет компьютер.
Записи алгоритмов на языках программирования называются
программами.
Язык PYTHON – универсальный язык программирования.
НАБОР КОМПЬЮТЕРНЫХ ИНСТРУМЕНТОВ
Редактор текста — это программа для ввода, редактирования и
форматирования текста программы на языке программирования.
Транслятор — инструмент, предназначенный для преобразования
программ, написанных на языках программирования, в программы
на машинном языке. Трансляторы делятся на два класса:
✦ компиляторы переводят весь исходный текст на машинный язык;
✦ интерпретатор последовательно переводит на машинный язык и
выполняет операторы исходного текста программы.
Отладчик — инструмент для поиска и исправления ошибок в
программе.
IDLE — СРЕДА РАЗРАБОТКИ
Окно консоли
File → New File
Окно программы
НАЧАЛО РАБОТЫ
Подключение модуля
Черепашьей графики
1. Программу набираем
2. Программу сохраняем
File → Save
3. Программу запускаем на выполнение
Run → Run Module
МОДУЛЬ GRAPH
Подключение модуля:
from graph import *
Установка размеров холста для рисования:
canvasSize(width, height)
canvasSize (600, 300)
ПИКСЕЛЬ
Пиксель — это наименьший элемент рисунка.
Изменение цвета пикселя: penColor()
✦ Можно указать цвет непосредственно: white, black, blue,
gray, navy, blue, cyan, green, yellow, red, orange, brown,
maroon, violet, purple.
penColor("blue")
✦ Можно указать код цвета в модели RGB, где яркость каждой
составляющей — целое число от 0 до 255.
penColor(0, 0, 255)
ТОЧКА И ОТРЕЗОК
Поставить точку:
point(x, y)
Задать цвет отрезка:
penColor() penColor (0, 25, 255)
Задать толщину отрезка: penSize (3)
line (0, 0, 100, 50)
penSize()
Прочертить отрезок:
line(x1, y1, x2, y2)
ПИШЕМ ПРОГРАММУ
ЛОМАНАЯ
Замкнутую или незамкнутую линию произвольной
формы можно построить с помощью команды polygon().
polygon([(80,110),(90,120),(110,120),(120,110)])
polygon([(80,90),(100,120),(120,90),(100,50),(80,90)])
ПРЯМОУГОЛЬНИК
Способ 1. С помощью команды line:
line(10, 10, 100, 10)
line(100, 10, 100, 50)
line(100, 50, 10, 50)
line(10, 50, 10, 10)
Способ 2. Командой polygon:
polygon([(10,10),(100,10),(100,50),(10,50),(10,10)])
Способ 3. Командой rectangle (), которой передаются четыре
аргумента — координаты левого верхнего угла и координаты
правого нижнего угла:
rectangle(10, 10, 100, 50)
ЗАЛИВКА
Команды polygon и rectangle позволяют не только
изобразит замкнутую ломаную, но и сразу же залить ее
внутреннюю область некоторым цветом. Для этого надо
предварительно задать цвет заливки с помощью команды
brushColor.
penColor("red") # цвет границы
brushColor("green") # цвет заливки
rectangle(10, 10, 100, 50)
polygon([(80,90),(100,120),(120,90),(100,50),(80,90)])
ПИШЕМ ПРОГРАММУ
ОКРУЖНОСТЬ
Нарисовать окружность можно с помощью команды circle ()
circle(x, y, r )
Первые два аргумента — это координаты центра окружности,
третий аргумент — радиус окружности.
penColor("red")
penColor("red") brushColor("green")
circle(200, 150, 50) circle(200, 150, 50 )
ПИШЕМ ПРОГРАММУ
ПРОЦЕДУРЫ
На языке Python вспомогательные алгоритмы оформляются в
виде процедур.
Основная программа, из которой вызываются процедуры, записывается
без отступа, начиная с первой позиции строки.
Например: romb(100, 200, 20)
ИСПОЛЬЗОВАНИЕ ЦИКЛОВ
Задача: Построить ряд из четырех одинаковых окружностей
радиуса 5 пикселей.
Способ 1
from graph import *
circle(20, 20, 5)
circle(40, 20, 5)
circle(60, 20, 5)
circle(80, 20, 5)
ИСПОЛЬЗОВАНИЕ ЦИКЛОВ
Способ 2. Для записи цикла можно воспользоваться тем, что нам
известно его точное число повторений; в нашем случае это 4. Иначе
говоря, здесь подойдет цикл «выполнить n раз».
МОДИФИЦИРУЕМ ПРОГРАММУ
ВЛОЖЕННЫЕ ЦИКЛЫ
Задача: построить три одинаковых ряда окружностей,
расположенных на расстоянии 20 пикселей по высоте друг от
друга.
СПОСОБ 1. Строим последовательно 3 ряда
from graph import *
x = 20
for i in range(4): Ряд 1
circle(x, 20, 5)
x =+ 20
x = 20
for i in range(4):
Ряд 2
circle(x, 40, 5)
x =+ 20
x = 20
for i in range(4): Ряд 3
circle(x, 60, 5)
x =+ 20
СПОСОБ 2
Для изображения трёх
горизонтальных рядов можно
использовать цикл «сделать n
раз».
Такой же цикл можно
использовать и для
изображения окружностей,
образующих один
горизонтальный ряд.
Таким образом, мы получили
один цикл внутри другого
цикла, т. е. вложенный цикл.
ШТРИХОВКА
Во многих задачах компьютерной графики нужно заштриховать какие-то
области. Штриховка строится из параллельных линий, которые удобно
рисовать в цикле.
ПОСТАНОВКА ЗАДАЧИ
Задача: изобразим прямоугольник и выполним вертикальную
штриховку, разделив его на равные полосы шириной h.
Подсчитаем, из скольких полосок
определенной ширины h будет
состоять наша штриховка:
ПРОГРАММА
?
ПИШЕМ ПРОГРАММУ
ООП
Объектно-ориентированное программирование — это
подход, при котором программа рассматривается как набор
объектов, взаимодействующих друг с другом.
КЛАССЫ ОБЪЕКТОВ
Каждый объект является экземпляром некоторого класса.
КЛАСС:
СОБАКА
ОБЪЕКТ: пёс Юрико
Свойства (характеристики):
порода,
вес, размеры, шерстный покров, окрас и т. д. АТРИБУТЫ
Способы поведения:
просить еду, бегать, лаять, спать и т. д
МЕТОДЫ
Классы — это своего рода заготовки, шаблоны; используя один шаблон,
можно построить много объектов.
класс
объект объект объект
атрибуты методы
ЧЕРЕПАШЬИ БЕГА
Постановка задачи. Две черепашки наперегонки будут
двигаться с начала в конец беговой дорожки. Их скорость
будет меняться случайным образом.
Болельщики – их может быть два и более – перед началом
забега высказывают свои предположения о том, какая
Черепшка придет к финишу первой.
Игрок считается победителем, если его ожидания
оправдываются.
Нам понадобятся две библиотеки: import turtle
библиотека черепашьей графики и import random
библиотека для генерации случайных
чисел.
Мы будем работать с экземплярами Screen
классов Screen и Turtle. Turtle
Их имена пишутся с большой буквы.
Создадим объект ww — беговую ww =
дорожку. [Link]()
Для объекта ww установим размеры ww =
1020×100. [Link]()
[Link](1020, 100)
Установим зелёный цвет дорожки. ww =
[Link]()
[Link](1020, 100)
[Link]("green")
Создадим объект – первую one = [Link]("turtle")
Черепашку. Назовём её One
Пусть корпус нашей Черепашки one = [Link]("turtle")
будет окрашен в красный цвет. [Link]("red")
Спрячем Черепашку. one = [Link]("turtle")
[Link]("red")
[Link]()
Поднимем её перо и переместим на one = [Link]("turtle")
стартовую позицию — к левому краю [Link]("red")
беговой дорожки. [Link]()
[Link]()
[Link](-500, 20)
Сделаем так, чтобы one =
Черепашка [Link]("turtle")
показалась, то есть [Link]("red")
стала видна на [Link]()
стартовой позиции. [Link]()
[Link](-500, 20)
[Link]()
Напишем аналогичный two = [Link]("turtle")
программный код для [Link]("blue")
второй Черепашки. [Link]()
Назовём её two, [Link]()
сделаем синей и [Link](-500, -20)
поместим в точку [Link]()
(-500, -20).
Организуем перемещение черепах до правой границы
беговой дорожки. Черепахи будут двигаться, пока хотя бы
одна из них не достигнет финиша.
[Link]() < 500 and [Link]() < 500
0 500
-500
ПОКА
while [Link]() < 500 and [Link]() < 500:
[Link]([Link](1, 10))
[Link]([Link](1, 10))
Пока ни одна из черепах не достигла финиша, они перемещаются
вперед, делая от одного до 10 шагов.
Количество шагов, определяющее скорость перемещения первой и
второй Черепашки, задается случайным образом.
После того, как хотя бы одна из Черепашек достигнет финиша, значение
координаты X , определяющее её положение, станет равным или
превысит 500. Условие перестанет выполняться, и перемещение
Черепашек прекратится.
В таком случае программа должна определить победителя.
if [Link]() > [Link]():
print("Победили красные!")
if [Link]() < [Link]():
print("Победили синие!")
if [Link]() = [Link]():
print("Ничья!")
✦ С помощью модуля graph можно строить в отдельном окне простые
изображения и анимацию. Подключается модуль с помощью
САМОЕ ГЛАВНОЕ команды from graph import *
✦ В программах, строящих графические изображения, можно
использовать переменные, обеспечивающие передачу данных из
памяти компьютера в программу. В программе может быть много
переменных. Каждая переменная имеет имя и значение. Имена
переменных могут состоять из латинских букв, цифр и знаков
подчёркивания. При этом они не могут начинаться с цифры.
✦ Чтобы не повторять один и тот же фрагмент кода в разных местах
программы, его можно оформить как вспомогательный алгоритм в
виде процедуры.
✦ Для оформления алгоритма, в котором некоторая
последовательность действий выполняется заранее известное
число раз используется цикл for.