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

Ловим яблоко и считаем очки

Что ты увидишь Когда кот касается яблока — очко прибавляется, яблоко появляется заново сверху. Счёт виден сверху слева. Файл: step3_catch.py
⬇️ Скачать код урока

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

    apple_y += speed

    # Прямоугольники кота и яблока
    cat_rect = pygame.Rect(cat_x, cat_y, cat_w, cat_h)
    apple_rect = pygame.Rect(apple_x, apple_y, apple_w, apple_h)

    if cat_rect.colliderect(apple_rect):     # поймали!
        score += 1
        apple_x = random.randint(0, WIDTH - apple_w)
        apple_y = -apple_h
    elif apple_y > HEIGHT:                    # упало мимо
        apple_x = random.randint(0, WIDTH - apple_w)
        apple_y = -apple_h

🔍 Звезда урока — colliderect()

В Змейке мы проверяли столкновение через in (по клеткам). Здесь всё в пикселях, поэтому у pygame есть готовая проверка: пересекаются ли два прямоугольника.

cat_rect = pygame.Rect(cat_x, cat_y, cat_w, cat_h)
apple_rect = pygame.Rect(apple_x, apple_y, apple_w, apple_h)

if cat_rect.colliderect(apple_rect):
    # прямоугольники наложились — значит поймали

Rect — это рамка (x, y, ширина, высота), как в Змейке. colliderect возвращает True, если две рамки пересеклись хоть краешком. Одна строчка — и проверка готова!

if … elif … — поймал ИЛИ промахнулся

Сначала проверяем «поймал?». Если нет — проверяем «улетело вниз?». В обоих случаях заводим новое яблоко сверху. Пока без штрафа за промах — это в следующем уроке.

Счёт на экране

font.render(f"Очки: {score}", True, WHITE) превращает текст в картинку, а screen.blit(...) рисует её в углу.

🎮 Попробуй сам 1. Дай за яблоко 10 очков вместо 1.
2. Сделай кота шире (cat_w побольше) — ловить станет легче.
← НазадУрок 2 — Яблоко падает