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(...) рисует её в углу.
cat_w побольше) — ловить станет легче.