Урок 34. Space Invaders 4 — рух формації
Урок 34. Space Invaders 4 — рух формації
Section titled “Урок 34. Space Invaders 4 — рух формації”Тривалість: 45–60 хв Рівень: Game Developer
📖 Словник: формація (англ. “formation”) — група ворогів (шеренга / стрій / бойове шикування), які рухаються та вибудовуються як єдине ціле.
🎯 Місія
Section titled “🎯 Місія”Навчи всю формацію рухатися як єдине ціле.
🧠 Ключова ідея
Section titled “🧠 Ключова ідея”direction = 1for enemy in enemies: enemy.rect.x += enemy_speed * direction💡 Пояснення простою мовою
Section titled “💡 Пояснення простою мовою”Усі вороги рухаються в один бік, поки хтось не торкнеться краю. Тоді direction змінюється на протилежний і формація рушає інакше.
💡 Аналогія: Уяви шкільну чергу на обід. Усі йдуть вправо, поки перший не впирається в стіну. Тоді черга розвертається і йде вліво.
🧩 Розбираємо по рядках
Section titled “🧩 Розбираємо по рядках”direction = 1— 1 означає «вправо», -1 — «вліво»;enemy.rect.x += enemy_speed * direction— кожен кадр кожен ворог зсувається наenemy_speedпікселів у бікdirection.
Як працює розворот формації
Section titled “Як працює розворот формації”graph TD
A["direction = 1 (вправо)"] --> B["Кожен кадр:<br/>enemy.x += speed * 1"]
B --> C{"Хтось торкнувся<br/>правого краю?"}
C -- "Ні" --> B
C -- "Так" --> D["direction = -1<br/>+ опустити формацію"]
D --> E["Кожен кадр:<br/>enemy.x += speed * -1"]
E --> F{"Хтось торкнувся<br/>лівого краю?"}
F -- "Ні" --> E
F -- "Так" --> G["direction = 1<br/>+ опустити формуцію"]
G --> A
✏️ Основні завдання
Section titled “✏️ Основні завдання”- Рух горизонтально.
🙋 Підказка: цикл
for enemy in enemiesі додаванняenemy_speedдоx. - На краю зміни напрямок.
🙋 Підказка: перевір
enemy.rect.right >= 800абоenemy.rect.left <= 0для будь-якого ворога. - Опусти формуцію.
🙋 Підказка: при розвороті додай
enemy.rect.y += 30до кожного ворога. - Прискорюй при меншій кількості ворогів.
🙋 Підказка:
enemy_speed = base_speed + (total - len(enemies)) * 0.3.
⭐ Challenge
Section titled “⭐ Challenge”Вороги прискорюються, коли їх стає мало.
🧪 Перед запуском
Section titled “🧪 Перед запуском”Хоча б раз за урок спробуй передбачити результат коду до запуску. Після запуску порівняй прогноз із реальністю.
🐞 Debug Mission
Section titled “🐞 Debug Mission”Навмисно зламай одну частину програми. Прочитай traceback або спостережи неправильну поведінку, знайди причину й виправ її.
✅ Урок завершено, якщо Марко може
Section titled “✅ Урок завершено, якщо Марко може”- пояснити головну ідею своїми словами;
- виконати основні завдання без копіювання готового рішення;
- змінити програму під нову вимогу;
- знайти й виправити хоча б одну власну помилку.
🏠 Домашня місія
Section titled “🏠 Домашня місія”Покращ Challenge однією власною ідеєю. Перед кодом сформулюй її одним реченням.
💡 Підказка для дорослого
Section titled “💡 Підказка для дорослого”Не виправляйте код одразу. Краще запитайте: «Що ти очікував? Що сталося? Який рядок за це відповідає? Що можна перевірити?»