Черепашкова графіка

Учимося малювати за допомогою Python

Після того, як ми зробили найскладніше: опанували основні алгоритмічні структури в мові Python, можна тепер перепочити і "поганяти" черепашку. Мова йде про спеціальний модуль і відповідний набір команд, за допомогою яких можна запрограмувати створення найпростіших зображень десь приблизно таким же способом, як ви це робили раніше за допомогою Scratch. Там теж є відповідний модуль "Олівець" і набір блоків, компонуючи які можна примусити спрайт створювати якісь малюнки.

От як це зробити тільки в Python і поговоримо.

"Обкладинка" модуля "Олівець"
у Scratch 3

Перш за все, так само як і в Scratch 3, ми повинні підключити до нашої програми спеціальний модуль, за допомогою якого ми будемо створювати зображення. Цей модуль називається turtle (з англ. "черепаха") і підключається він на самому початку нашої програми за допомогою стандартної команди from turtle import * (з модуля turtle імпортувати все). Фактично, ця фраза означає таке: "Агов, Python! Візьми модуль turtle і весь цілком приєднай його до нашої програми, бо зараз ми з цього модуля будемо використовувати різні команди, тож нехай цей модуль буде у тебе напохваті, щоб ти в будь-який момент міг піддивитись в інструкцію, як ту чи іншу команду виконувати!" Після того, як нами приєднано увесь модуль повністю, тепер у нас є повна свобода щодо використання будь-яких команд з нього, а значить повна свобода щодо створення нами будь-яких зображень, які тільки придумаємо.

Між іншим...

Саме поняття "модуля" буде нам зустрічатися в ході вивчення мови Python ще не один раз. Модулі - це дуже крутезна штука, яка розширює можливості мови програмування. Щоб вам легше було зрозуміти, що це таке, можете сприймати його як такий собі довідник для мови програмування, в якому описано ЯК виконувати ту чи іншу команду. Однак, якщо "приліпити" за промовчанням до програми одразу усі модулі, які тільки існують, а їх тільки стандартних аж ого-го скільки, то можна уявити собі, яким величезним буде файл нашої програми, скільки мегабайтів (чи може й гігабайтів) він займатиме. Тому програмісти підключають до своєї програми тільки ті модулі, які їм потрібні для виконання конкретної задачі.

Окрім того, можна підключати навіть не весь модуль, а лише одну чи декілька "команд" з нього. Тоді такі "команди" пишуться в тому ж рядку, який написали ми замість зірочки. Наприклад, якщо наша "черепашка" малюватиме тільки кола і більш нічого, тоді можемо написати from turtle import circle і сміливо цю команду використовувати. З модуля turtle до нашої програми у цьому випадку буде імпортовано тільки circle і більше нічого зайвого.

Принцип малювання черепашкою такий же, як і в Scratch. Вибрати олівець (товщина, колір), опустити олівець, переміститися на певну кількість кроків - з'явиться відповідної довжини лінія і т.д. і т.п. Так само як і у Scratch, у Python є і своя система координат, в якій центром полотна (і місцем розташування черепашки за промовчанням) є точка з координатами (0,0), і все інше - як в математиці: вправо і вгору - додатні координати, вліво і вниз - від'ємні.

Взагалі кажучи, серед команд Python є ті, у яких є аналоги в Scratch, а є ті, яким аналогів нема, що робить малювання в Python простішим і цікавішим, бо дозволяє створювати складніші малюнки. Отже:

Команди модуля turtle

Більше інформації про методи черепашкової графіки 👉 ТУТ 👈.

А тепер - практика!

Спробуємо тепер застосувати вищезазначені команди для створення малюнків. Для початку створимо найпростіший малюнок - квадрат. За аналогією зі Scratch для малювання будемо використовувати цикл з лічильником, у тіло якого 4 рази запрограмуємо дві дії: рух вперед і поворот на 90°.

Перегляньте, які блоки було використано для створення зображення в Scratch і знайдіть відповідні їм команди в Python.

Квадрат у Scratch

А тепер перегляньте код у Python і перейдіть за посиланням праворуч, щоб побачити, як цей код працює:

from turtle import * #підключення модуля turtle

reset()              #очищення полотна

width(3)             #встановлення товщини пера

color('blue')        #встановлення кольору пера

shape('turtle')      #зміна вигляду Черепашки

for i in range(4):   #запуск циклу для малювання

  fd(100)            #іти 100 кроків

  rt(90)             #повернути на 90°

done()               #кінець малювання 

Трохи ускладнимо задачу. Створимо прямокутник з різними сторонами і зафарбуємо його:

from turtle import *   #підключаємо модуль

reset()                #очищуємо полотно

width(3)               #товщина пера 3

up()                   #піднімаємо перо

goto(-50,50)           #переміщуємо його в потрібне місце

down()                 #опускаємо перо

color('blue','yellow') #задаємо колір пера і колір заливки

begin_fill()           #початок малювання з зафарбовуванням

for i in range(2):

    fd(100)            #ідемо на 100 кроків

    rt(90)             #поворот на 90°

    fd(50)             #ідемо на 50 кроків (друга сторона)

    rt(90)             #поворот на 90°

end_fill()             #кінець малювання з зафарбовуванням

done()                 #закінчення малювання 

ВИСНОВКИ

Як бачимо, малювання в Python не дуже відрізняється від підходів до створення зображень у Scratch. Усе ті ж дії: опустити олівець, перемістити на певну кількість кроків, або в точку з потрібними координатами, підняти олівець тощо.

На відміну від Scratch, команд для малювання у Python значно більше, вони дозволяють здійснити більш тонке налаштування процесу малювання і його результатів. Зокрема, у Python можливе малювання фігур з зафарбовуванням, для цього у Scratch довелося б складати досить значну кількість блоків. Так само і з малюванням кола: те, для чого в Scratch потрібно використати цикл з підбиранням налаштувань (кількість кроків, кількість повторів), у Python робиться лише однією командою.

Натомість, при малюванні у Python є суттєві проблеми з визначенням координат. Їх, на відміну від Scratch, доводиться підбирати вручну, перебираючи інколи досить велику кількість варіантів. У Scratch же для визначення поточних координат достатньо просто перемістити спрайт у потрібне місце і подивитися у відповідне віконце.

У будь-якому разі, тепер ви знаєте основи і легко можете компонувати різні зображення. І нехай вам у цьому допомагає ваша фантазія!

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

За допомогою Черепашки створіть у Python зображення Державного прапора України.