import pygame, sys WIDTH, HEIGHT = 600, 400 BG = (30, 30, 46) ORANGE = (244, 162, 97) pygame.init() screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("Ловкий кот") clock = pygame.time.Clock() # Пока кот — это просто оранжевый прямоугольник cat_w, cat_h = 88, 74 cat_x = WIDTH // 2 - cat_w // 2 # по центру cat_y = HEIGHT - cat_h - 10 # внизу while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() # Зажатые клавиши: пока держишь — кот едет keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: cat_x -= 7 if keys[pygame.K_RIGHT]: cat_x += 7 # Не выпускаем кота за края экрана cat_x = max(0, min(cat_x, WIDTH - cat_w)) screen.fill(BG) pygame.draw.rect(screen, ORANGE, (cat_x, cat_y, cat_w, cat_h)) pygame.display.flip() clock.tick(60)
В Змейке всё прыгало по клеткам. Здесь кот двигается плавно: за один
кадр cat_x меняется на 7 пикселей. И кадров теперь
60 в секунду — поэтому движение гладкое.
pygame.key.get_pressed() — зажатые клавишиРаньше мы ловили момент нажатия (KEYDOWN). Здесь иначе:
каждый кадр спрашиваем «какие клавиши сейчас зажаты?». Пока держишь стрелку —
кот едет. Отпустил — остановился. Так удобнее для плавного движения.
keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: # левая стрелка зажата? cat_x -= 7 # едем влево
cat_x = max(0, min(cat_x, WIDTH - cat_w)) — хитрая, но полезная
строчка. min(...) не даёт уехать вправо дальше края, а
max(0, ...) — влево за ноль.
7.cat_y.ORANGE на свой.