🎮 Все игры 🐱 Ловкий кот
1 2 3 4 5 6
Урок 4

Жизни, проигрыш и рестарт

Что ты увидишь Пропустил яблоко — минус жизнь. Жизни кончились — «Игра окончена», пробел начинает заново. И игра потихоньку ускоряется. Файл: step4_lives.py
⬇️ Скачать код урока

📝 Код урока (главное)

def new_game():
    cat_x = WIDTH // 2 - cat_w // 2
    apple_x = random.randint(0, WIDTH - apple_w)
    return cat_x, apple_x, -apple_h, 0, 3, 4.0


cat_x, apple_x, apple_y, score, lives, speed = new_game()
game_over = False

# ... в цикле событий ...
if event.type == pygame.KEYDOWN and game_over and event.key == pygame.K_SPACE:
    cat_x, apple_x, apple_y, score, lives, speed = new_game()
    game_over = False

# ... в обновлении мира ...
    if cat_rect.colliderect(apple_rect):
        score += 1
        speed += 0.3            # с каждым яблоком чуть быстрее
        apple_x = random.randint(0, WIDTH - apple_w)
        apple_y = -apple_h
    elif apple_y > HEIGHT:
        lives -= 1             # промах — минус жизнь
        apple_x = random.randint(0, WIDTH - apple_w)
        apple_y = -apple_h
        if lives <= 0:
            game_over = True

🔍 Что тут происходит

Флаг game_over

Как в Змейке: переменная True/False. Пока False — игра идёт. Стало True — кот и яблоко замирают, показываем надпись, ждём пробел.

Функция new_game() — «начать сначала»

Она возвращает все стартовые значения сразу: позицию кота, яблоко, 0 очков, 3 жизни, скорость 4. И в начале игры, и при рестарте мы зовём одну и ту же функцию — не нужно дублировать код.

Ускорение

speed += 0.3 при каждой пойманной яблоке — игра становится всё азартнее. Поэтому скорость дробная (4.0), а не целая.

💡 Готово ядро игры! Сейчас это уже полноценная игра — просто из прямоугольников. Дальше делаем красиво: картинки (урок 5) и звуки (урок 6).
🎮 Попробуй сам 1. Дай 5 жизней вместо 3.
2. Сделай ускорение сильнее (0.6) — или убери совсем.
← НазадУрок 3 — Ловим!