Розглянемо побудову складніших узорів, тобто послідовностей повторюваних фрагментів.
Наприклад, узор:
складається з повторюваного фрагменту ліній, координати котрих можна виразити через початкові значення х та у:
Задавши зміну х в діапазоні, що відповідає розміру робочої області побудови, отримаємо малювання узору по всій довжині вікна:
for x in range(0,500,100): canvas.create_line(x,60,x+50,60) canvas.create_line(x+50,60, x+50,10) canvas.create_line(x+50,10,x+100,10) canvas.create_line(x+100,10,x+100,60)
Повний код проекту:
from tkinter import * tk=Tk() canvas=Canvas(tk,width=500,height=500) x=0 y=60 a=50 b=100 while x<500: canvas.create_line(x,y,x+a,y) canvas.create_line(x+a,y,x+a,y-b) canvas.create_line(x+a,y-b,x+a+b,y-b) canvas.create_line(x+a+b,y-b,x+a+b,y) x=x+a+b canvas.pack()
Задача 1. Намалювати узор з трикутників
Підказка:
Задача 2. Намалювати узор з різнонаправлених трикутників
Підказка:
Задача 3. Намалювати узор з трикутників та кіл
Визначте координати побудови одного елемента узору, і закономірність переходу до наступного
Задача 4. Намалювати узор з квадратиків
Визначте координати побудови одного елемента узору, і закономірність переходу до наступного
Задача 5. Намалювати площину з квадратиків
Потрібен вкладений цикл: побудову попередньої задачі необхідно повторити для кількох рядків
Задача 6. Намалювати шахову дошку з квадратиків
Підказка:
Розв'язки самостійних задач:
for x in range(0,500,100):
canvas.create_line(x,200,x+50,100, width=2)
canvas.create_line(x+50,100,x+100,200, width=2)
canvas.create_line(x+100,200, x,200, width=2)
++++++++++++++++++++++
for x in range(0,500,200):
canvas.create_line(x,200,x+50,100, width=2)
canvas.create_line(x+50,100,x+150,300, width=2)
canvas.create_line(x+150,300, x+200,200, width=2)
canvas.create_line(x,200, x+200,200, width=2)
=========================
for x in range(0,500,100):
canvas.create_line(x,200,x+50,150, width=2)
canvas.create_line(x+50,150,x+100,200, width=2)
canvas.create_line(x+100,200, x,200, width=2)
canvas.create_oval(x,200,x+100,300, width=2)
=========================
for x in range(1,500,50):
k=random.choice(kolory)
canvas.create_rectangle(x,200,x+50,150, fill=k)
=========================
for y in range(1,500,50):
for x in range(1,500,50):
k=random.choice(kolory)
canvas.create_rectangle(x,y+50,x+50,y, fill=k)
=========================