Помалюймо ще?

Завдання минулого уроку було зовсім нескладним. Для його виконання потрібно було лише намалювати два прямокутника: перший з синім контуром і синьою заливкою (color('blue','blue')), а під ним другий - такого ж розміру тільки з жовтим контуром і жовтою заливкою (color('yellow','yellow')).

Можемо дещо вдосконалити наш малюнок, додавши до нього відповідний темі напис.

from turtle import *

title('Glory to Ukraine')

reset()

hideturtle() #приховаємо черепашку, вона тут недоречна

width(3)

up()

goto(-150,0) #переміщуємо черепашку в точку початку малювання

down()

color('blue','blue')

lt(90)

begin_fill() #малюємо верхній прямокутник

for i in range(2):

    fd(100)

    rt(90)

    fd(300)

    rt(90)

end_fill()

up()

goto(0,20) #переміщуємось в точку, яка є серединою майбутнього напису

down()

color('yellow', 'yellow')

write('Слава', align='center', font=('Arial', 40, 'italic bold')) #створення напису

up()

goto(-150,0) #перехід до точки початку другого прямокутника

down()

rt(90)

begin_fill() #малюємо другий прямокутник

for i in range(2):

    fd(300)

    rt(90)

    fd(100)

    rt(90)

end_fill()

up()

goto(0,-80) #переміщення до точки, яка є серединою другого напису

color('blue','blue')

write('Україні!', align='center', font=('Arial', 40, 'italic bold')) #створення напису

done()

Ось таке повинно вийти!

Що ж! Продовжуємо малювати.

Створимо якісь складніші зображення. Наприклад, якийсь візерунок.

Для початку, візьмемо за основу готовий скрипт у Scratch. Розгляньте скрипт і розберіть усі його компоненти.

А тепер просто перекодуємо блоки Scratch командами мови Python, використавши ті ж параметри:

from turtle import *

reset()

width(3)

color('purple')

speed(0)

for i in range(24):        #зовнішній цикл, задає кількість кіл

    for j in range(120):   #внутрішній цикл малює одне коло

        fd(4)

        rt(3)

    rt(15)

done()  

Поекспериментуйте з параметрами циклів щоб отримати інші результати.

Створення таких візерунків містить одну проблему: доводиться досить довго підбирати кількість повторень циклу. Однак, насправді, ця проблема вирішується дуже просто: для цього потрібно лише знати, на який кут здійснюється поворот для наступної ітерації циклу. Тоді, щоб обчислити кількість ітерацій, потрібно просто розділити 360° на цей кут. Наприклад, якщо планується поворот на 12°, тоді потрібно зробити 360°:12°=30 повторень циклу.

Завдання 36

Створіть візерунок з шестикутників

Розв'язання:

Щоб зобразити шестикутник, потрібно повертатись на 60°, для малювання одного шестикутника треба здійснити 6 ітерацій внутрішнього циклу. Далі усе залежить від того, на який кут плануємо повернутися для малювання наступного шестикутника. Якщо цей кут, наприклад, 20°, тоді зовнішній цикл потрібно повторити 360°:20°=18 разів:

from turtle import *

reset()

width(3)

color('blue')

speed(0)

for i in range(18):

    for j in range(6):

        fd(100)

        rt(60)

    rt(20)

done() 

Перевірте, що вийшло, 👉 ТУТ 👈

Продовжимо тему з колами. Намалюємо емблему Олімпійських ігор - відомі п'ять кілець. Щоправда, добитися часткового перекриття кільцями одне одного буде досить проблематично, тому просто намалюємо олімпійські кільця у тому порядку і в тих кольорах, в яких вони зображені в оригіналі, без перекриття.

На цей раз нам не потрібно повертати кола на якийсь кут, тому не будемо використовувати для створення кола цикли, а застосуємо готовий метод circle().

from turtle import *

title('Олімпійські кільця')

up()

goto(-120,0)

down()

setup(500,500#встановлення розмірів полотна

width(15)       #ширина пера

color('blue')

circle(55)      #додатний радіус - за годинниковою стрілкою

up()

goto(0,0)

down()

color('black')

circle(55)

up()

goto(120,0)

down()

color('red')

circle(55)

up()

goto(-60,40)

down()

color('yellow')

circle(-55)     #від'ємний радіус - проти годинникової стрілки

up()

goto(60,40)

down()

color('green')

circle(-55)

done()

Власне, зовсім не складно: визначаємо координати центрів кіл, переміщуємо туди "Черепашку" і малюємо там коло потрібного кольору:

ДОМАШНЄ ЗАВДАННЯ

Ну що! А слабО тепер запрограмувати такий малюнок? 😉 

Підказки

Як бачимо, малюнок складається з квадратів, трикутника і круга. Як намалювати один квадрат знаємо? Знаємо! От тільки з якого з двох квадратів починати треба, щоб процес зафарбовування одного не зафарбував інший? Якщо не здогадались - поекспериментуйте! Що стосується рами вікна - то це зовсім просто: опускаємо "олівець" (pd()) малюємо відрізки за допомогою goto().

Для зображення "даху" - малюємо трикутник, з'єднуючи послідовно точки за допомогою того ж таки goto(), а от щоб зафарбувати його - це усе слід "загорнути" у begin_fill()...end_fill().

Те ж стосується й "сонечка". Якщо так само "загорнути" circle(...) у begin_fill()...end_fill(), то наше коло буде зафарбоване і перетвориться на круг.

Ну і щоб зафарбувати тло полотна - теж є своя команда bgcolor(). Про цю команду написано 👉 тут 👈 (див. у розділі "Команди налаштування кольору").

Все! Успіху!