Урок 33. Space Invaders 3 — формація ворогів
Урок 33. Space Invaders 3 — формація ворогів
Section titled “Урок 33. Space Invaders 3 — формація ворогів”Тривалість: 45–60 хв Рівень: Game Developer
📖 Словник: формація (англ. “formation”) — група ворогів (шеренга / стрій / бойове шикування), які вишиковуються та рухаються як єдине ціле.
🎯 Місія
Section titled “🎯 Місія”Створи клас Enemy та формацію прибульців.
🧠 Ключова ідея
Section titled “🧠 Ключова ідея”enemies = []for row in range(3): for col in range(8): enemies.append(Enemy(80 + col * 70, 60 + row * 60))💡 Пояснення простою мовою
Section titled “💡 Пояснення простою мовою”Ми малюємо ворогів як сітку — рядки й стовпчики, як клітинки таблиці. Зовнішній цикл робить рядки, внутрішній — стовпчики в кожному рядку.
💡 Аналогія: Уяви парти в класі. Зовнішній цикл — це ряди парт (1-й, 2-й, 3-й). Внутрішній цикл — це учні в кожному ряді (1-й, 2-й, … 8-й). Кожна «парта» — це один ворог.
🧩 Розбираємо по рядках
Section titled “🧩 Розбираємо по рядках”for row in range(3)— 3 рядки ворогів;for col in range(8)— 8 ворогів у кожному рядку;80 + col * 70— кожен наступний ворог правіше на 70 пікселів (починаючи з 80);60 + row * 60— кожен наступний рядок нижче на 60 пікселів.
Як працюють вкладені цикли
Section titled “Як працюють вкладені цикли”graph TD
A["row = 0"] --> B["col від 0 до 7"]
B --> C["Створити 8 ворогів<br/>в рядку 0"]
C --> D["row = 1"]
D --> E["col від 0 до 7"]
E --> F["Створити 8 ворогів<br/>в рядку 1"]
F --> G["row = 2"]
G --> H["col від 0 до 7"]
H --> I["Створити 8 ворогів<br/>в рядку 2"]
I --> J["Всього 3×8 = 24 ворогів"]
✏️ Основні завдання
Section titled “✏️ Основні завдання”- Створи Enemy.
🙋 Підказка: клас
Enemyсхожий наPlayer, тількиrectстворюється з переданих x, y. - Побудуй 3×8 формацію.
🙋 Підказка: використай два вкладених цикли
for row in range(3)іfor col in range(8). - Намалюй їх.
🙋 Підказка: цикл
for enemy in enemies:іpygame.draw.rectдля кожного. - Параметризуй rows/columns.
🙋 Підказка: винеси
rows = 3іcols = 8у змінні на початку файлу.
⭐ Challenge
Section titled “⭐ Challenge”Формація має створюватися функцією за rows і columns.
🧪 Перед запуском
Section titled “🧪 Перед запуском”Хоча б раз за урок спробуй передбачити результат коду до запуску. Після запуску порівняй прогноз із реальністю.
🐞 Debug Mission
Section titled “🐞 Debug Mission”Навмисно зламай одну частину програми. Прочитай traceback або спостережи неправильну поведінку, знайди причину й виправ її.
✅ Урок завершено, якщо Марко може
Section titled “✅ Урок завершено, якщо Марко може”- пояснити головну ідею своїми словами;
- виконати основні завдання без копіювання готового рішення;
- змінити програму під нову вимогу;
- знайти й виправити хоча б одну власну помилку.
🏠 Домашня місія
Section titled “🏠 Домашня місія”Покращ Challenge однією власною ідеєю. Перед кодом сформулюй її одним реченням.
💡 Підказка для дорослого
Section titled “💡 Підказка для дорослого”Не виправляйте код одразу. Краще запитайте: «Що ти очікував? Що сталося? Який рядок за це відповідає? Що можна перевірити?»