Первый слайд презентации: Программирование на Python: графика
1 Программирование на Python: графика Простые программы Процедуры Циклы Штриховка Закрашивание областей Построение графиков функций Анимация Игры Модуль graph.py : http://kpolyakov.spb.ru/download/graph.py
Слайд 4: Определение координат
100 Определение координат 4 (0,0) X Y ( 100, 100 ) ( 200, 50 ) ( 200,2 50 ) ( 100, 200 ) (3 00, 100 ) (3 00, 200 ) (5 0,15 0 ) ( 3 5 0,15 0 ) ( 200,15 0 ) базовая точка ? ? ? ? ? ? 200 ? ?
Слайд 5: Управление цветом
5 Подключение графического модуля: from graph import * подключить все функции модуля graph Цвет линий: penColor ( "red" ) white, black, gray, navy, blue, cyan, green, yellow, red, orange, brown, maroon, violet, purple,... Цвет заливки: brushColor ( "green" ) http://bit.ly/2mNrkoq Толщина линий: penSize ( 2 )
Слайд 6: Управление цветом ( RGB )
6 Цвет в формате RGB : penColor ( 255, 255, 0 ) R ( red ) 0..255 G ( green ) 0..255 B ( blue ) 0..255 "yellow" brushColor ( 255, 0, 255 ) "magenta" penColor ( 0, 255, 255 ) "cyan" brushColor ( 255, 255, 255 ) "white" penColor ( 0, 0, 0 ) "black"
Слайд 7: Примитивы (простейшие фигуры)
7 ( x 1, y 1 ) ( x 2, y 2 ) penColor ( 0, 255, 0 ) line (x1, y1, x2, y2) ( x, y ) penColor ( 0, 0, 255 ) point (x, y) ( x 1, y 1 ) ( x 2, y 2 ) ( x 3, y 3 ) ( x 4, y 4 ) ( x 5, y 5 ) penColor ( 255, 0, 0 ) moveTo (x1, y1) lineTo (x2, y2) lineTo (x3, y3) lineTo (x4, y4) lineTo (x5, y5)
Слайд 8: Примитивы (простейшие фигуры)
8 (10, 20) ( 50, 40 ) penColor ( "blue" ) brushColor ( "yellow" ) rectangle ( 10, 20, 50, 40 ) penColor ( "red" ) brushColor ( "green" ) circle ( 50, 30, 20 ) ( 50, 3 0 ) R=20 penColor ( "cyan" ) brushColor ( "magenta" ) polygon ( [( 10, 10 ), ( 50, 50 ), ( 10, 50 ), ( 10, 10 )] ) ( 10, 10 ) ( 10, 5 0 ) (5 0, 5 0 )
Слайд 9: Пример
9 (200, 50) (100, 100) (300, 200) from graph import * p en Color ( "magenta" ) b rush Color ( "blue" ) r ectangle ( 100, 100, 300, 200 ) b rush Color ( "yellow" ) polygon ([( 100, 100 ), ( 200, 50 ), ( 300, 100 ), ( 100, 100 )]) p en Color ( "white" ) b rush Color ( "green" ) circle ( 20 0, 1 5 0, 50 ) run () ( 200, 150 )
Слайд 13: Процедуры
Задача : Построить фигуру: Особенность : Три похожие фигуры. общее: размеры, угол поворота отличия: координаты, цвет Процедуры 13 Можно ли решить известными методами ? ? Сколько координат надо задать ? ?
Слайд 14: Процедуры (подпрограммы)
14 Процедура – это вспомогательный алгоритм, который предназначен для выполнения некоторых действий. Применение : выполнение одинаковых действий в разных местах программы разбивка программы (или другой процедуры) на подзадачи для лучшего восприятия Подзадача1 Подзадача 2 Подзадача3 1.1 1.2 1.3 2.1 2.2 2.3 3.1 3.2 3.3 Задача
Слайд 15: Как построить процедуру?
15 выделить одинаковые или похожие действия ( три фигуры ) найти в них общее ( размеры, форма, угол поворота ) и отличия ( координаты, цвет ) отличия обозначить как переменные, они будут параметрами процедуры 100 60 ( x +100, y ) ( x, y -60) ( x, y ) Параметры: x, y – координаты угла с – цвет заливки Параметры – это данные, от которых зависит работа процедуры. !
Слайд 16: Процедура
16 100 60 ( x +100, y ) ( x, y -60) ( x, y ) def treug (x, y, c): brushColor (c) polygon ( [(x,y), (x,y- 60 ), (x+ 100,y), (x,y)] ) определить ( define ) название параметры отступ
Слайд 17: Программа с процедурой
17 ( 100, 100 ) 100 60 (2 00, 100 ) (2 00, 1 6 0 ) from graph import * def treug (x, y, c): brushColor (c) polygon ([(x,y),(x,y- 60 ), (x+ 100,y),(x,y)] ) penColor ( "black" ) treug ( 100, 100, "blue" ) treug ( 200, 100, "green" ) treug ( 200, 160, "red" ) run () def treug (x, y, c): brushColor (c) polygon ([(x,y),(x,y- 60 ), (x+ 100,y),(x,y)] ) вызовы процедуры аргументы (значения параметров)
Слайд 18: Задания
18 « 3 »: Используя одну процедуру, построить фигуру. « 4 »: Используя одну процедуру, построить фигуру.
Слайд 19: Задания
19 « 5 »: Используя одну процедуру, построить фигуру. «6»: Используя одну процедуру, построить фигуру.
Слайд 21: Использование циклов
21 40 40 100 160 Что меняется ? ? circle ( 40, 40, 20 ) circle ( 100, 40, 20 ) circle ( 160, 40, 20 ) ... x Как меняется x? ? x = 40 for i in range ( 5 ): circle (x, 40, 20 ) x += 60 "сделай 5 раз" 40 x += 60
Слайд 22: Использование циклов
22 40 40 100 160 10 0 1 60 x = 40 for i in range ( 5 ): circle (x, 40, 20 ) x += 60 1- й ряд : Что меняется для 2-го ряда ? ? 40 y Можно сделать это процедурой с параметром y ! !
Слайд 23: Использование циклов
23 from graph import * def row ( y ): x = 40 for i in range ( 5 ): circle (x, y, 20 ) x += 60 y = 40 for k in range ( 3 ): row ( y ) y += 60 run () def row ( y ): x = 40 for i in range ( 5 ): circle (x, y, 20 ) x += 60 процедура вызов процедуры вниз на 60
Слайд 24: Задания
24 « 3 »: Ввести с клавиатуры число N и нарисовать N рядов по 5 кругов. Пример ( N = 3 ) :
Слайд 25: Задания
25 «4»: Ввести с клавиатуры число N и нарисовать из кругов прямоугольный размером N на N. Пример ( N = 3 ) :
Слайд 26: Задания
26 « 5 »: Ввести с клавиатуры число N и нарисовать из кругов равнобедренный треугольник с высотой N. Каждый ряд должен быть покрашен в свой цвет. Пример ( N = 3 ) :
Слайд 27: Задания-2
27 « 3 »: Ввести с клавиатуры число N и нарисовать N вертикальных рядов по 5 ромбиков. Пример ( N = 2) :
Слайд 28: Задания-2
28 «4»: Используя циклы и процедуры, нарисуйте узор. Число повторений рисунка N введите с клавиатуры. Пример ( N = 3) :
Слайд 31: Штриховка
31 ( x 1, y 1 ) ( x 2, y 2 ) N линий ( N=5) h rectangle (x1, y1, x2, y2) line ( x1+h, y1, x1+h, y2) line ( x1+2*h, y1, x1+2*h, y2) line ( x1+3*h, y1, x1+3*h, y2) ... x x line ( x, y1, x, y2) В цикле менять x : Как найти h ? ? x 1 +h
Слайд 32: Штриховка
32 ( x 1, y 1 ) ( x 2, y 2 ) N линий ( N=5) h x = x1 + h for i in range (N): line (x, y1, x, y2) x += h line ( x, y1, x, y2) x x меняется! для 1-й линии "сделай N раз" Что плохо ? ? для следующей линии Как меняется ? ? x = ?
Слайд 33: Штриховка
33 ( x 1, y 1 ) ( x 2, y 2 ) N линий h from graph import * x1 = 100 ; y1 = 100 x2 = 300 ; y2 = 200 N = 10 rectangle (x1,y1,x2,y2) h = (x2-x1)/(N+1) x = x1 + h for i in range (N): line (x, y1, x, y2) x += h run ()
Слайд 34: Сложная штриховка
34 ( x 1, y 1 ) ( x 2, y 2 ) ( x 3, y 2 ) a h ( x 3 + a, y 1 ) Как найти a и h ? ? line( x1+h, y1, x1+h-a, y2) ; line( x1+2*h, y1, x1+2*h-a, y2) ; line( x1+3*h, y1, x1+3*h-a, y2) ; ... x x-a Как меняется x ? ? Сначала: x = x1 + h В цикле: x += h
Слайд 35: Очень сложная штриховка
35 ( x 1, y 1 ) ( x 2, y 2 ) h x h y N Как найти h x и h y ? ? y x y line( x1, y1+hy, x1+hx, y1+hy) ; line( x1, y1+2*hy, x1+2*hx, y1+2*hy) ; line( x1, y1+3*hy, x1+3*hx, y1+3*hy) ; ... Сначала: x = x1+hx y = y1+hy В цикле: x + = hx y += hy
Слайд 36: Задания
36 « 3 »: Ввести с клавиатуры количество линий, построить фигуру и выполнить штриховку : «4»: Ввести с клавиатуры количество линий, построить фигуру и выполнить штриховку :
Слайд 37: Задания
37 «5»: Ввести с клавиатуры количество линий и построить фигуру: « 6 »: Ввести с клавиатуры количество линий и построить фигуру:
Слайд 39: Заливка разными цветами
x x + h Заливка разными цветами 39 ( x 1, y 1 ) ( x 2, y 2 ) h x = x1; c = 0 for i in range (N): brushColor (c, c, c) rectangle (x, y1, x+h, y2) x += h; c += hc brushColor (c, c, c) rectangle (x, y1, x+h, y2) серый: R=G=B N полос Шаг изменения цвета: hc = 255 // N
Слайд 40: Задания
40 «3»: Ввести с клавиатуры число полос и построить фигуру, залив все области разным цветом. «4»: Ввести с клавиатуры число полос и построить фигуру, залив все области разным цветом.