Skip to content

Урок 29. Рефакторинг гри в OOP

Урок 29. Рефакторинг гри в OOP

Section titled “Урок 29. Рефакторинг гри в OOP”

Тривалість: 45–60 хв
Рівень: OOP Explorer

📖 Словник: рефакторинг (англ. “refactoring”) — переробка коду, щоб він став чистішим і зрозумілішим, але при цьому його поведінка не змінюється. Також у грі часто кажуть фіча (англ. “feature”) — нова можливість/функція.

Перебудуй уже працюючу гру на чистішу OOP-структуру.

game/
├── main.py
├── player.py
├── enemy.py
├── coin.py
└── settings.py

💡 Пояснення простою мовою

Section titled “💡 Пояснення простою мовою”

Рефакторинг — це переробка коду, щоб він став чистішим, без зміни поведінки. Замість одного великого файлу розбиваємо на маленькі: кожен клас — у свій файл. Так легше знаходити баги та додавати нові фічі.

🧩 Розбираємо по рядках

Section titled “🧩 Розбираємо по рядках”
main.py — запускає гру, містить game loop
player.py — клас Player (рух, малювання, HP)
enemy.py — клас Enemy (рух, атака)
coin.py — клас Coin (збір монет)
settings.py — константи: ширина, висота, кольори, швидкість

🔎 Приклад: запускай і дивись

Section titled “🔎 Приклад: запускай і дивись”
player.py
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 += dy
main.py
from 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
  1. Винеси Player у файл. 🙋 Підказка: Створи player.py, перенеси клас Player туди та імпортуй from player import Player.
  2. Винеси Enemy. 🙋 Підказка: Те саме — enemy.py + from enemy import Enemy.
  3. Створи settings.py. 🙋 Підказка: WIDTH = 800 HEIGHT = 600 та інші константи — потім from settings import *.
  4. Прибери дублювання. 🙋 Підказка: Якщо однаковий код є в двох місцях — винеси в метод або змінну.

Повністю перероби Catch the Coin на OOP-проєкт із кількох файлів.

Хоча б раз за урок спробуй передбачити результат коду до запуску. Після запуску порівняй прогноз із реальністю.

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

✅ Урок завершено, якщо Марко може

Section titled “✅ Урок завершено, якщо Марко може”
  • пояснити головну ідею своїми словами;
  • виконати основні завдання без копіювання готового рішення;
  • змінити програму під нову вимогу;
  • знайти й виправити хоча б одну власну помилку.

Покращ Challenge однією власною ідеєю. Перед кодом сформулюй її одним реченням.

💡 Підказка для дорослого

Section titled “💡 Підказка для дорослого”

Не виправляйте код одразу. Краще запитайте: «Що ти очікував? Що сталося? Який рядок за це відповідає? Що можна перевірити?»