Урок 24. Pygame + OOP — клас Player
Урок 24. Pygame + OOP — клас Player
Section titled “Урок 24. Pygame + OOP — клас Player”Тривалість: 45–60 хв
Рівень: OOP Explorer
📖 Словник: об’єкт (англ. “object”) — конкретний екземпляр класу. Також у грі кажуть фіча (англ. “feature”) — нова можливість. Термін клас (англ. “class”) — це шаблон, за яким створюються об’єкти.
🎯 Місія
Section titled “🎯 Місія”Перетвори Pygame-гравця на об’єкт із власними методами.
🧠 Ключова ідея
Section titled “🧠 Ключова ідея”class Player: def __init__(self, x, y): self.rect = pygame.Rect(x, y, 50, 50) self.speed = 5
def draw(self, screen): pygame.draw.rect(screen, (0, 200, 100), self.rect)💡 Пояснення простою мовою
Section titled “💡 Пояснення простою мовою”Тепер гравець — це об’єкт, який сам себе малює та знає свої координати. Замість вільних змінних player_x, player_y у нас один об’єкт player, який має rect (прямокутник) і метод draw(). Так набагато легше додавати нові фічі.
🧩 Розбираємо по рядках
Section titled “🧩 Розбираємо по рядках”class Player: def __init__(self, x, y): # Створюємо на позиції (x, y) self.rect = pygame.Rect(x, y, 50, 50) # Прямокутник 50×50 пікселів self.speed = 5 # Швидкість руху
def draw(self, screen): # Метод малювання pygame.draw.rect(screen, (0, 200, 100), self.rect) # Зелений квадрат🔎 Приклад: запускай і дивись
Section titled “🔎 Приклад: запускай і дивись”import pygame
pygame.init()screen = pygame.display.set_mode((400, 300))clock = pygame.time.Clock()
class Player: def __init__(self, x, y): self.rect = pygame.Rect(x, y, 50, 50) self.speed = 5
def draw(self, screen): pygame.draw.rect(screen, (0, 200, 100), self.rect)
player = Player(175, 125)
running = Truewhile running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False
screen.fill((30, 30, 30)) player.draw(screen) pygame.display.flip() clock.tick(60)
pygame.quit()✏️ Основні завдання
Section titled “✏️ Основні завдання”- Додай
move(keys). 🙋 Підказка: Перевіряйkeys[pygame.K_LEFT]тощо та змінюйself.rect.x. - Додай межі екрана.
🙋 Підказка:
self.rect.x = max(0, min(self.rect.x, 350))— обмеження від 0 до width-50. - Додай
hpіscore. 🙋 Підказка: Додайself.hp = 100іself.score = 0в__init__. - Перенеси малювання у
draw(). 🙋 Підказка: Вже є в прикладі — головне, щобdraw(screen)викликався в циклі.
⭐ Challenge
Section titled “⭐ Challenge”Перероби Catch the Coin так, щоб Player був об’єктом.
🧪 Перед запуском
Section titled “🧪 Перед запуском”Хоча б раз за урок спробуй передбачити результат коду до запуску. Після запуску порівняй прогноз із реальністю.
🐞 Debug Mission
Section titled “🐞 Debug Mission”Навмисно зламай одну частину програми. Прочитай traceback або спостережи неправильну поведінку, знайди причину й виправ її.
✅ Урок завершено, якщо Марко може
Section titled “✅ Урок завершено, якщо Марко може”- пояснити головну ідею своїми словами;
- виконати основні завдання без копіювання готового рішення;
- змінити програму під нову вимогу;
- знайти й виправити хоча б одну власну помилку.
🏠 Домашня місія
Section titled “🏠 Домашня місія”Покращ Challenge однією власною ідеєю. Перед кодом сформулюй її одним реченням.
💡 Підказка для дорослого
Section titled “💡 Підказка для дорослого”Не виправляйте код одразу. Краще запитайте: «Що ти очікував? Що сталося? Який рядок за це відповідає? Що можна перевірити?»