Урок 20. 🐉 Boss Project — Catch the Coin
Урок 20. 🐉 Boss Project — Catch the Coin
Section titled “Урок 20. 🐉 Boss Project — Catch the Coin”Тривалість: 60–90 хв або 2 короткі заняття
XP: 500
🎯 Місія
Section titled “🎯 Місія”Створити першу завершену графічну гру, використавши знання з уроків 1–19.
🎮 Правила
Section titled “🎮 Правила”Гравець керує персонажем. На екрані є монета. При collision:
score += 1;- монета переходить у випадкове місце.
Гра триває обмежений час.
📋 Мінімальні вимоги
Section titled “📋 Мінімальні вимоги”- Pygame window;
- game loop;
- player;
- клавіатура;
- межі екрана;
- coin;
- collision;
- random position;
- score;
- завершення гри.
🏗 Етап 1 — Вікно
Section titled “🏗 Етап 1 — Вікно”WIDTH = 800HEIGHT = 600FPS = 60🧍 Етап 2 — Player
Section titled “🧍 Етап 2 — Player”player = pygame.Rect(100, 100, 50, 50)player_speed = 5Додай керування й межі.
🪙 Етап 3 — Coin
Section titled “🪙 Етап 3 — Coin”coin = pygame.Rect(400, 300, 30, 30)При collision збільш score і перемісти coin.
🖥 Етап 4 — Score
Section titled “🖥 Етап 4 — Score”font = pygame.font.Font(None, 36)
score_text = font.render( f"Score: {score}", True, (255, 255, 255))
screen.blit(score_text, (20, 20))⏱ Етап 5 — Таймер
Section titled “⏱ Етап 5 — Таймер”Корисно:
start_time = pygame.time.get_ticks()get_ticks() повертає мілісекунди від запуску Pygame.
Зроби гру на 30 секунд.
🏁 Етап 6 — Game Over
Section titled “🏁 Етап 6 — Game Over”Після завершення:
TIME'S UP!Score: 12🥉 Bronze
Section titled “🥉 Bronze”Герой + монета + collision + score.
🥈 Silver
Section titled “🥈 Silver”Bronze + таймер + Game Over + restart.
🥇 Gold
Section titled “🥇 Gold”Silver + ворог + 3 життя + різні монети.
💎 Diamond
Section titled “💎 Diamond”Додай власну механіку: звук, картинки, high score, bonus coin, levels або speed boost.
🐞 Debug Checklist
Section titled “🐞 Debug Checklist”pygame.init()?- Game loop працює?
pygame.QUIT?- Екран очищається?
- Player і coin малюються?
pygame.display.flip()?- Координати змінюються?
colliderect()спрацьовує?- Score змінюється?
clock.tick(FPS)є?
🧠 Питання після проєкту
Section titled “🧠 Питання після проєкту”- Навіщо game loop?
- Чому
yросте вниз? - Що зберігає
Rect? - Як працює
colliderect()? - Навіщо FPS?
- Що буде без очищення екрана?
- Які частини коду вже хочеться перетворити на окремі об’єкти?
Останнє питання веде до наступного етапу:
class Player: ...
class Enemy: ...
class Coin: ...Тобто до OOP.
🏆 Фінальний критерій
Section titled “🏆 Фінальний критерій”Марко може дати іншій людині пограти у свою гру й пояснити основні частини власного коду. Код не мусить бути ідеальним — важливо розуміти, чому він працює.