Skip to content

Урок 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) перетинаються, тобто об’єкти «торкнулись» один одного.

Реалізуй попадання кулі у ворога.

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 — далі не перевіряти"]
  1. Collision bullet/enemy. 🙋 Підказка: вкладені цикли — по кожній кулі й кожному ворогу. Або enemy.rect.colliderect(bullet.rect).
  2. Видали кулю. 🙋 Підказка: bullets.remove(bullet) або збирай «вбиті» кулі в окремий список.
  3. Пошкодь/видали ворога. 🙋 Підказка: для початку просто enemies.remove(enemy).
  4. Додай score. 🙋 Підказка: змінна score = 0 на початку, score += 10 при зіткненні, виводь через font.render.

Додай ворога з 2 HP.

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

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

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

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

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

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

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

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