Коротко: Pygame — бібліотека, яка перетворює звичайний Python на середовище для ігор: вікно, спрайти, керування, зіткнення. Перша гра — зазвичай аркада — виходить приблизно за місяць занять.
Pygame — це бібліотека, яка дозволяє писати ігри на звичайному Python. У програмі ступеня «Python: Ігри та боти» для дітей 10–14 років вона займає три послідовні теми: спершу вікно й події, потім спрайти й анімація, і тільки після цього повноцінна гра. Перша гра, у яку можна пограти по-справжньому, з'являється саме на третьому етапі.
Що відбувається на першій темі Pygame
Перша тема — вікно, події, малювання фігур, таймер і контроль FPS. Звучить скромно, але саме тут дитина стикається з ідеєю, яка відрізняє гру від усього, що вона писала раніше: ігровий цикл.
Раніше програма виконувалася зверху вниз і закінчувалась. Гра працює інакше: вона нескінченно повторює один і той самий цикл — перевірити, що натиснув гравець, порахувати новий стан, намалювати кадр. Тридцять або шістдесят разів на секунду. Коли дитина це розуміє, у неї змінюється уявлення про те, як узагалі влаштовані ігри, у які вона грає.
Ігровий цикл: гра перемальовується 60 разів на секунду
Перше, що дитина розуміє про ігри: вони не «йдуть», вони перемальовуються. Шістдесят разів на секунду програма стирає екран і малює все заново — фон, персонажа, рахунок.
Усередині кожного такого кола три кроки. Подивитися, що натиснув гравець. Порахувати нові координати. Намалювати. Далі коло повторюється, і саме ця повторюваність створює враження руху — як у мультфільмі з окремих кадрів.
Момент усвідомлення тут помітний з боку. Дитина, яка звикла до Scratch, де спрайт просто «йде», уперше бачить, що рух — це збільшення числа на одиницю шістдесят разів на секунду. Після цього питання «як зробити швидше» вона вирішує сама.
Перша гра, яку пишуть майже всі
Зазвичай це щось із двох: втеча від перешкод або збирання предметів. Обидві прості за правилами й чесні за складністю — їх справді можна дописати до кінця, а не кинути на середині.
Ми не нав'язуємо одну тему на всю групу. Хтось робить гонку, хтось — космос, хтось переносить настільну гру, у яку грає вдома. Механіка під капотом однакова, а картинка й правила різні, і саме тому діти не переписують одне в одного: у сусіда просто інша гра.
Спрайти та анімація: чому квадрат стає персонажем
Друга тема — завантаження зображень, спрайт-листи, плавний рух і ефекти. До цього моменту герой на екрані — прямокутник. Тепер це картинка, яка ще й змінюється під час руху.
Спрайт-лист — один файл, у якому кадри анімації лежать поруч, і програма показує їх по черзі. Це той самий принцип, за яким зроблені персонажі у двовимірних іграх, які дитина бачила все життя. Момент, коли власний персонаж уперше йде, а не ковзає, зазвичай запам'ятовується сильніше за все інше на курсі.
Повноцінна гра: що додається на третьому етапі
Третя тема Pygame — колізії, рахунок, рівні, звуки, меню старту й кінця гри. Це те, що перетворює демонстрацію на гру, у яку можна дати пограти другові.
Колізії — перевірка зіткнень: герой торкнувся монети, ворога, стіни. Рахунок і рівні дають мету й зростання складності. Меню й звуки роблять із проєкту закінчену річ, а не «щось на екрані».
Саме тут дитина вперше стикається з питанням, яке в школі майже не ставлять: коли робота вважається завершеною. Гру завжди можна доробляти — і навчитись зупинятися теж частина навички.
Скільки часу займає перша гра
Три теми Pygame — це послідовний блок усередині програми з 156 занять, розрахованої на 18 місяців. Тобто гра — не разова вправа на одне заняття, а проєкт, який збирається поступово: спершу вікно, потім рух, потім правила.
Пришвидшити цей шлях складно, і в цьому сенс. Дитина, якій одразу дали готовий шаблон гри, отримає результат за годину й нічого не зрозуміє. Дитина, яка сама пройшла від порожнього вікна до меню й рахунку, зможе потім зробити другу гру без підказок.
Чи потрібно вміти малювати, щоб зробити гру?
Ні. Для навчальних проєктів беруть готові набори зображень, а власна графіка — за бажанням. Курс про код, а не про малювання.
Що потужніше — Pygame чи готові конструктори ігор?
Це різні інструменти. Конструктор швидше приводить до результату, Pygame вчить писати логіку руками. Після Pygame дитина розуміє, що саме конструктор робить за неї, — і це знання лишається надовго.
Куди подіти готову гру?
У програмі є окрема тема про Git і GitHub: контроль версій, commit, push, pull request і публікація першого репозиторію. Тобто гра не залишається на домашньому комп'ютері — на неї можна дати посилання.
Де діти застрягають
Персонаж їде крізь стіну. Найчастіша перша проблема, і причина завжди однакова: перевірка зіткнення стоїть після переміщення, а не до нього. Розбір цієї помилки дає більше, ніж пів теми теорії.
Гра «моргає». Забули очистити екран перед новим кадром, і старі позиції залишаються слідом. Виглядає ефектно, але випадково.
Усе летить надто швидко. Швидкість прив'язана до кадру, а не до часу. Тут з'являється обмеження частоти — та сама річ, яку дорослі розробники ставлять за звичкою.
Ці три помилки трапляються практично в кожного, і ми їх не попереджаємо заздалегідь. Дитина, яка сама побачила, як персонаж провалюється крізь підлогу, запам'ятовує порядок перевірок назавжди.
Чи можна дати таку гру друзям
Показати — так, надіслати одним файлом — складніше, ніж хочеться. Гра на Pygame потребує встановленого Python і бібліотеки, тож на комп'ютері друга вона просто так не запуститься.
Обхідні шляхи є: зібрати гру в один виконуваний файл або викласти код на GitHub, звідки його забере той, у кого Python уже стоїть. Перший спосіб ми на середньому ступені не проходимо — він тягне за собою купу технічних дрібниць, які цікаві не всім.
Саме тому Telegram-бот, який іде двома темами пізніше, зазвичай справляє на підлітків більше враження: ним можна поділитися посиланням, не пояснюючи нічого про встановлення.
Звідки беруться картинки й звуки
Малювати самому не обов'язково — і навіть не бажано на першій грі: інакше весь урок піде на піксель-арт замість коду. Беремо готові набори з відкритою ліцензією, їх у мережі достатньо.
Заодно виходить перша розмова про те, що чуже не можна брати просто тому, що воно лежить у пошуку. Різниця між «безкоштовно завантажити» і «дозволено використати» для підлітка неочевидна, і краще пояснити її на грі, ніж пізніше на чомусь серйознішому.
Хто хоче своє — малює. Зазвичай це починається з другої гри й закінчується тим, що дитина приносить власного персонажа, намальованого вдома між заняттями.
Що йде після ігор
Pygame у програмі не фінал. Далі йдуть Telegram-боти на aiogram зі станами діалогу, потім підключення ШІ через OpenAI API — генерація тексту та зображень із власного скрипту. Фінальний проєкт ступеня дитина обирає сама: гра, бот із ШІ або автоматизований скрипт.
Якщо цікаво, що входить у роботи першого року навчання, є окремий розбір проєктів за перший рік. Повна програма ступеня — на сторінці курсу «Python: Ігри та боти».