Черепашкова графіка
Учимося малювати за допомогою 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 простішим і цікавішим, бо дозволяє створювати складніші малюнки. Отже:
Більше інформації про методи черепашкової графіки 👉 ТУТ 👈.
А тепер - практика!
Спробуємо тепер застосувати вищезазначені команди для створення малюнків. Для початку створимо найпростіший малюнок - квадрат. За аналогією зі Scratch для малювання будемо використовувати цикл з лічильником, у тіло якого 4 рази запрограмуємо дві дії: рух вперед і поворот на 90°.
Перегляньте, які блоки було використано для створення зображення в Scratch і знайдіть відповідні їм команди в Python.
А тепер перегляньте код у 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 зображення Державного прапора України.