Урок 29. Рефакторинг гри в OOP
Урок 29. Рефакторинг гри в OOP
Section titled “Урок 29. Рефакторинг гри в OOP”Тривалість: 45–60 хв
Рівень: OOP Explorer
📖 Словник: рефакторинг (англ. “refactoring”) — переробка коду, щоб він став чистішим і зрозумілішим, але при цьому його поведінка не змінюється. Також у грі часто кажуть фіча (англ. “feature”) — нова можливість/функція.
🎯 Місія
Section titled “🎯 Місія”Перебудуй уже працюючу гру на чистішу OOP-структуру.
🧠 Ключова ідея
Section titled “🧠 Ключова ідея”game/├── main.py├── player.py├── enemy.py├── coin.py└── settings.py💡 Пояснення простою мовою
Section titled “💡 Пояснення простою мовою”Рефакторинг — це переробка коду, щоб він став чистішим, без зміни поведінки. Замість одного великого файлу розбиваємо на маленькі: кожен клас — у свій файл. Так легше знаходити баги та додавати нові фічі.
🧩 Розбираємо по рядках
Section titled “🧩 Розбираємо по рядках”main.py — запускає гру, містить game loopplayer.py — клас Player (рух, малювання, HP)enemy.py — клас Enemy (рух, атака)coin.py — клас Coin (збір монет)settings.py — константи: ширина, висота, кольори, швидкість🔎 Приклад: запускай і дивись
Section titled “🔎 Приклад: запускай і дивись”class Player: def __init__(self, x, y): self.x = x self.y = y self.hp = 100
def move(self, dx, dy): self.x += dx self.y += dyfrom player import Player
player = Player(200, 150)player.move(5, 0)print(f"Player at ({player.x}, {player.y}), HP: {player.hp}")# Player at (205, 150), HP: 100✏️ Основні завдання
Section titled “✏️ Основні завдання”- Винеси Player у файл.
🙋 Підказка: Створи
player.py, перенеси клас Player туди та імпортуйfrom player import Player. - Винеси Enemy.
🙋 Підказка: Те саме —
enemy.py+from enemy import Enemy. - Створи settings.py.
🙋 Підказка:
WIDTH = 800HEIGHT = 600та інші константи — потімfrom settings import *. - Прибери дублювання. 🙋 Підказка: Якщо однаковий код є в двох місцях — винеси в метод або змінну.
⭐ Challenge
Section titled “⭐ Challenge”Повністю перероби Catch the Coin на OOP-проєкт із кількох файлів.
🧪 Перед запуском
Section titled “🧪 Перед запуском”Хоча б раз за урок спробуй передбачити результат коду до запуску. Після запуску порівняй прогноз із реальністю.
🐞 Debug Mission
Section titled “🐞 Debug Mission”Навмисно зламай одну частину програми. Прочитай traceback або спостережи неправильну поведінку, знайди причину й виправ її.
✅ Урок завершено, якщо Марко може
Section titled “✅ Урок завершено, якщо Марко може”- пояснити головну ідею своїми словами;
- виконати основні завдання без копіювання готового рішення;
- змінити програму під нову вимогу;
- знайти й виправити хоча б одну власну помилку.
🏠 Домашня місія
Section titled “🏠 Домашня місія”Покращ Challenge однією власною ідеєю. Перед кодом сформулюй її одним реченням.
💡 Підказка для дорослого
Section titled “💡 Підказка для дорослого”Не виправляйте код одразу. Краще запитайте: «Що ти очікував? Що сталося? Який рядок за це відповідає? Що можна перевірити?»