Циклічні побудови

Розглянемо побудову складніших узорів, тобто послідовностей повторюваних фрагментів.

Наприклад, узор:


складається з повторюваного фрагменту ліній, координати котрих можна виразити через  початкові значення х та у:


Задавши зміну х в діапазоні, що відповідає розміру робочої області побудови, отримаємо малювання узору по всій довжині вікна:

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)
=========================

Остання зміна: субота 11 липня 2020 6:58