Урок 35. Space Invaders 5 — Bullet → Enemy
Урок 35. Space Invaders 5 — Bullet → Enemy
Section titled “Урок 35. Space Invaders 5 — Bullet → Enemy”Тривалість: 45–60 хв Рівень: Game Developer
📖 Словник: колізія / зіткнення (англ. “collision”) — коли два прямокутника (
Rect) перетинаються, тобто об’єкти «торкнулись» один одного.
🎯 Місія
Section titled “🎯 Місія”Реалізуй попадання кулі у ворога.
🧠 Ключова ідея
Section titled “🧠 Ключова ідея”if bullet.rect.colliderect(enemy.rect): score += 10💡 Пояснення простою мовою
Section titled “💡 Пояснення простою мовою”Кожен кадр ми перевіряємо: «чи куля торкнулася ворога?» Якщо так — додаємо очки, видаляємо кулю і ворога.
💡 Аналогія: Це як у настільній грі: кидаєш м’ячик і перевіряєш, чи потрапив у ціль. Якщо потрапив — забираєш ціль з поля.
🧩 Розбираємо по рядках
Section titled “🧩 Розбираємо по рядках”bullet.rect.colliderect(enemy.rect)— методRectперевіряє, чи перетинаються два прямокутники;score += 10— якщо так, додаємо 10 очок.
Як працює зіткнення кулі з ворогом
Section titled “Як працює зіткнення кулі з ворогом”graph TD
A["Кожен кадр"] --> B["Для кожної кулі"]
B --> C["Для кожного ворога"]
C --> D{"colliderect?"}
D -- "Ні" --> C
D -- "Так" --> E["score += 10"]
E --> F["Видаляємо кулю"]
F --> G["Видаляємо ворога"]
G --> H["break — далі не перевіряти"]
✏️ Основні завдання
Section titled “✏️ Основні завдання”- Collision bullet/enemy.
🙋 Підказка: вкладені цикли — по кожній кулі й кожному ворогу. Або
enemy.rect.colliderect(bullet.rect). - Видали кулю.
🙋 Підказка:
bullets.remove(bullet)або збирай «вбиті» кулі в окремий список. - Пошкодь/видали ворога.
🙋 Підказка: для початку просто
enemies.remove(enemy). - Додай score.
🙋 Підказка: змінна
score = 0на початку,score += 10при зіткненні, виводь черезfont.render.
⭐ Challenge
Section titled “⭐ Challenge”Додай ворога з 2 HP.
🧪 Перед запуском
Section titled “🧪 Перед запуском”Хоча б раз за урок спробуй передбачити результат коду до запуску. Після запуску порівняй прогноз із реальністю.
🐞 Debug Mission
Section titled “🐞 Debug Mission”Навмисно зламай одну частину програми. Прочитай traceback або спостережи неправильну поведінку, знайди причину й виправ її.
✅ Урок завершено, якщо Марко може
Section titled “✅ Урок завершено, якщо Марко може”- пояснити головну ідею своїми словами;
- виконати основні завдання без копіювання готового рішення;
- змінити програму під нову вимогу;
- знайти й виправити хоча б одну власну помилку.
🏠 Домашня місія
Section titled “🏠 Домашня місія”Покращ Challenge однією власною ідеєю. Перед кодом сформулюй її одним реченням.
💡 Підказка для дорослого
Section titled “💡 Підказка для дорослого”Не виправляйте код одразу. Краще запитайте: «Що ти очікував? Що сталося? Який рядок за це відповідає? Що можна перевірити?»