Делать определенное количество раз. Цикл for

Мы уже использовали ранее цикл for для повторения действий определенное количество раз, когда управляли Черепашкой.
Воспользуемся им еще раз и порисуем.
Начнем с одного круга в случайном месте и нарисуем его по щелчку мыши:

from tkinter import *
from random import randrange as rnd, choice

root = Tk()
root.geometry('600x600+100+100')

canv = Canvas(bg='white')
canv.pack(fill=BOTH,expand=1)

def click(event):
	canv.delete(ALL) # очистить холст
	x = rnd(50,550) # выбрать случайные координаты
	y = rnd(50,550)
	r = 15 # радиус
	canv.create_oval(x-r,y-r,x+r,y+r, fill = 'green') # нарисовать

canv.bind('<1>',click) # связать событие "Нажата левая кнопка мыши на холсте" с вызовом функции click
mainloop()
1. Нарисовать 20 кругов в случайных местах
snimok-ekrana-ot-2016-10-09-22-18-50
2. Нарисовать 40 кругов в случайных местах случайного размера, случайного цвета
snimok-ekrana-ot-2016-10-09-22-21-20
3. Нарисовать 20 маленьких кругов в случайных местах недалеко от щелчка мыши
snimok-ekrana-ot-2016-10-09-22-22-48
4. По щелчку нарисовать 10 концентрических окружностей вокруг места щелчка
snimok-ekrana-ot-2016-10-09-22-31-41
5. По щелчку нарисовать в случайных местах группы по 10 концентрических закрашенных окружностей
snimok-ekrana-ot-2016-10-09-22-34-02
6. Нарисовать прицел
snimok-ekrana-ot-2016-10-09-22-44-53

Дана функция для рисования «домика»:

from tkinter import *
from random import randrange as rnd, choice
 
root = Tk()
root.geometry('600x600+100+100')
 
canv = Canvas(bg='white')
canv.pack(fill=BOTH,expand=1)
 
colors = ('gray','#F2BF45','#F3761F','#F9E784','#E2F112','#E3D385')

def click(event):
	d(event.x,event.y,50)
	
def d(x,y,m):	
	floors = rnd(2,7)
	canv.create_rectangle(x,y,x+m,y-m*(floors+1)/2, width=3, fill = 'white')
	xx = x
	for f in range(floors):
		yy = y - m*f/2
		color = choice(colors)
		canv.create_rectangle(xx+m*0.2,yy-m*0.5,xx+m*0.4,yy-m*0.7, width=3,fill=color)
		color = choice(colors)
		canv.create_rectangle(xx+m*0.6,yy-m*0.5,xx+m*0.8,yy-m*0.7, width=3,fill=color)
		
		
	
	
	
canv.bind('<1>',click) 
mainloop()
7. Нарисовать «улицу»: несколько домов в ряд
snimok-ekrana-ot-2016-10-25-14-56-26

Дана функция для рисования звезды:

from tkinter import *
from random import randrange as rnd, choice
import math
 
root = Tk()
root.geometry('600x600+100+100')
 
canv = Canvas(bg='white')
canv.pack(fill=BOTH,expand=1)
 
colors = ['red','orange','yellow','green','cyan','blue','magenta','black','gray','lightgreen']

def click(event):
	x = event.x
	y = event.y
	for ii in range(rnd(5)):
		r1 = rnd(10,20)
		r2 = r1*rnd(5,12)/12

		star(x,y,r1,r2,choice(colors),choice(colors))

def star(x0=400,y0=300,r1=100,r2=30,col1='lightgreen',col2='green',da=9):
    a1 = 0
    a2 = 0
    a = []
    da = 360//da
    for a1 in range(da//2,360+da,da):
        y1 = y0 + r1*math.sin(a1*math.pi/180)
        x1 = x0 + r1*math.cos(a1*math.pi/180)
        a += [(x1,y1)]
        y2 = y0 + r2*math.sin((a1+da//2)*math.pi/180)
        x2 = x0 + r2*math.cos((a1+da//2)*math.pi/180)
        a += [(x2,y2)]
    canv.create_polygon(a, fill = col1, outline = col2, width = 2)
	
canv.bind('<1>',click) 
mainloop()
10. Нарисовать много разноцветных звезд в случайных местах
11. Нарисовать таблицу (сетку) линиями
snimok-ekrana-ot-2016-10-17-01-49-08
12. Нарисовать таблицу из разноцветных ячеек (рисовать квадратами)
13. Нарисовать таблицу с горизонтальными рядами одного цвета
snimok-ekrana-ot-2016-10-17-01-54-08
14. Нарисовать таблицу с вертикальными рядами одного цвета
snimok-ekrana-ot-2016-10-17-01-56-07
15. Нарисовать таблицу со случайными цифрами внутри
snimok-ekrana-ot-2016-10-17-01-57-27
16. Нарисовать таблицу со случайно выбранными числами из последовательности: 2,4,8,16,32,64,128,256,512
snimok-ekrana-ot-2016-10-17-02-06-26
17. Нарисовать таблицу со случайно выбранными числами из последовательности: 2,4,8,16,32,64,128,256,512. Каждому числу — свой цвет
snimok-ekrana-ot-2016-10-17-02-05-51

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *