Pygame: Анимация и звук в игре (Урок 4)

Добавим в игру задний фон, основного игрока, анимации и звуковое сопровождение.

Очистка кода

Удалим из программы код, отвечающий за отображение квадрата и текстовых надписей. Оставим только необходимый код для отображения фона и игрока.

Добавление заднего фона

  1. Скачайте изображение для фона (например, по запросу «background for game» в Google).
  2. Поместите изображение в папку images проекта.
  3. Подключите изображение в код. Переименуем переменную в background. Изображение BG.png находится в папке images. Размеры изображения – 618×359 пикселей. Установим такие же размеры для экрана.
  4. Выводим изображение на экран с координатами (0, 0).
background = pygame.image.load("images/BG.png")
screen = pygame.display.set_mode((618, 359))
# ... дальнейший код ...
screen.blit(background, (0, 0))

Добавление игрока и анимации

  1. Для анимации игрока понадобится набор изображений (спрайты). Найдите готовый набор спрайтов, например, по запросу «sprite sheet» в Google.
  2. Распакуйте скачанный архив в папку images.
  3. Создадим списки изображений: walk_left и walk_right.
  4. Загрузим изображения в списки:
walk_left = [pygame.image.load(f'images/player_left/Player_left{i}.png') for i in range(1,5)]
walk_right = [pygame.image.load(f'images/player_right/Player_right{i}.png') for i in range(1,5)]
  1. Создадим переменную player_anim_count со значением 0 для отслеживания текущего кадра анимации.
  2. Выводим изображение игрока, используя элементы списка walk_right (или walk_left в зависимости от направления движения):
player_anim_count = 0
# ... в цикле игры ...
screen.blit(walk_right[player_anim_count], (300, 250))
player_anim_count += 1
if player_anim_count >= len(walk_right):
    player_anim_count = 0
  1. Для плавной анимации добавим задержку с помощью pygame.time.Clock(). Установим желаемое количество кадров в секунду (FPS).
clock = pygame.time.Clock()
# ... в цикле игры ...
clock.tick(15) # 15 FPS

Анимация фона

Создадим эффект движения фона, выводя два изображения и сдвигая их координаты.

  1. Создадим переменную bgx со значением 0.
  2. Выведем два изображения фона с координатами (bgx, 0) и (bgx + 618, 0).
  3. В цикле игры уменьшим значение bgx на 2.
  4. Добавим проверку: если bgx равен -618, обнулим bgx.
bgx = 0
# ... в цикле игры ...
screen.blit(background, (bgx, 0))
screen.blit(background, (bgx + 618, 0))
bgx -= 2
if bgx == -618:
    bgx = 0

Добавление звука

  1. Скачайте звуковой файл (MP3).
  2. Поместите файл в папку sounds проекта.
  3. Загрузите и воспроизведите звук с помощью pygame.mixer:
pygame.mixer.init()
sound = pygame.mixer.Sound("sounds/бежит.mp3")
sound.play(-1) # -1 для бесконечного воспроизведения

Теперь игра имеет анимированный задний фон, анимированного игрока и фоновую музыку, что улучшает игровой опыт.

Что будем искать? Например,программа