← Все вопросы

Как вставить картинку (спрайт) в игру на pygame?

Задан 4 месяца назад840 просмотров2 ответа
7

Надоело, что герой — просто цветной квадрат. Хочу поставить вместо него картинку (png с персонажем). Как загрузить картинку в pygame и нарисовать её в нужном месте?

2 ответа

12
✓ Принятый ответ — помог автору

Картинку загружают через pygame.image.load, а рисуют через blit. Загружать надо один раз до цикла, рисовать — каждый кадр.

player_img = pygame.image.load("hero.png").convert_alpha()  # один раз

# внутри цикла при отрисовке:
screen.blit(player_img, (x, y))   # рисуем в точку (x, y)

blit буквально значит «налепить картинку на экран». (x, y) — это левый-верхний угол картинки. .convert_alpha() нужен, чтобы прозрачный фон png остался прозрачным, а не закрасился чёрным.

Если картинка слишком большая — поменяй размер один раз после загрузки:

player_img = pygame.transform.scale(player_img, (50, 50))
5

Частая ошибка новичков — FileNotFoundError/couldn't open hero.png. pygame ищет картинку относительно того, откуда запущен скрипт, а не где лежит .py. Положи png рядом со скриптом и запускай из этой папки, либо собери надёжный путь через os.path.join(os.path.dirname(__file__), "hero.png").

Ваш ответ

Войдите, чтобы ответить на вопрос.