Pygame – разработка игр

онлайн тренер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Введение

Разработка игр — одно из самых увлекательных применений Python. Благодаря библиотеке Pygame создать 2D-игру с графикой, звуком и пользовательским интерфейсом можно за считанные дни. Библиотека предоставляет простой доступ к управлению графикой, событиям, звукам и текстом, и является идеальной для обучения, прототипирования и хобби-проектов.

В этом руководстве мы подробно рассмотрим возможности Pygame, от базовой инициализации до построения полноценной игры.


Основная часть

Установка

pip install pygame

Проверка установки:

import pygame
print(pygame.ver)

Инициализация и окно

import pygame
pygame.init()

screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption("Моя первая игра")

Главный игровой цикл

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    screen.fill((0, 0, 0))
    pygame.display.flip()

Работа с изображениями

player = pygame.image.load("player.png")
screen.blit(player, (100, 100))

Работа с текстом

font = pygame.font.SysFont("Arial", 36)
text = font.render("Привет, Pygame!", True, (255, 255, 255))
screen.blit(text, (50, 50))

Обработка клавиш

keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
    print("Нажата стрелка влево")

Работа со звуком

sound = pygame.mixer.Sound("sound.wav")
sound.play()

Музыка в фоне:

pygame.mixer.music.load("music.mp3")
pygame.mixer.music.play(-1)

Спрайты и столкновения

Создание спрайта

class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.image.load("player.png")
        self.rect = self.image.get_rect()

Группы спрайтов

all_sprites = pygame.sprite.Group()
player = Player()
all_sprites.add(player)

Столкновения

if pygame.sprite.spritecollide(player, enemies, False):
    print("Столкновение!")

Работа с анимацией

Анимация реализуется через последовательную смену изображений (кадров):

frames = [pygame.image.load(f"run_{i}.png") for i in range(5)]
current_frame = (pygame.time.get_ticks() // 100) % len(frames)
screen.blit(frames[current_frame], player.rect)

Повышение производительности

  • Используйте .convert() или .convert_alpha() для оптимизации изображений

  • Работайте с tick() для контроля FPS:

clock = pygame.time.Clock()
clock.tick(60)  # 60 FPS

Практические проекты на Pygame

  • Классическая аркада (Pong, Snake, Tetris)

  • Платформер с физикой

  • Интерактивный учебный симулятор

  • 2D-шутер с уровнями и спрайтами

Описание всех ключевых функций и модулей библиотеки pygame для Python

Инициализация и завершение

Функция Описание
pygame.init() Инициализирует все модули pygame. Вызывать перед началом работы.
pygame.quit() Завершает работу всех модулей. Вызывать перед выходом из программы.
pygame.get_init() Проверяет, инициализирован ли pygame.
pygame.get_sdl_version() Возвращает версию SDL, на которой работает pygame.

Отображение и окно

Функция / Метод Описание
pygame.display.set_mode((width, height), flags=0) Создаёт окно с заданными размерами.
pygame.display.set_caption(title) Устанавливает заголовок окна.
pygame.display.get_caption() Получает текущий заголовок.
pygame.display.update() Обновляет всё окно (или часть, если указать прямоугольник).
pygame.display.flip() Обновляет весь экран (используется с двойной буферизацией).
pygame.display.set_icon(icon_surface) Устанавливает иконку окна.

Работа с событиями

Функция Описание
pygame.event.get() Получает список всех событий.
pygame.event.poll() Получает одно событие из очереди.
pygame.event.wait() Ожидает появления следующего события.
pygame.event.clear() Очищает очередь событий.
pygame.event.post(event) Помещает событие в очередь.
pygame.KEYDOWN, pygame.KEYUP События нажатия и отпускания клавиш.
pygame.MOUSEBUTTONDOWN, MOUSEBUTTONUP, MOUSEMOTION События мыши.

Клавиатура и мышь

Функция Описание
pygame.key.get_pressed() Возвращает список всех нажатых клавиш.
pygame.key.get_mods() Возвращает состояние модификаторов (Shift, Ctrl).
pygame.mouse.get_pos() Возвращает координаты курсора.
pygame.mouse.set_pos((x, y)) Перемещает курсор.
pygame.mouse.get_pressed() Возвращает состояние кнопок мыши.

Работа с изображениями

Функция Описание
pygame.image.load(filename) Загружает изображение (поддерживает .png, .jpg, .bmp и др.).
Surface.blit(source, dest) Отображает одно изображение поверх другого.
Surface.fill(color) Заполняет поверхность цветом.
pygame.transform.scale(surface, size) Масштабирует изображение.
pygame.transform.rotate(surface, angle) Поворачивает изображение на угол.
pygame.transform.flip(surface, xbool, ybool) Отражает изображение по горизонтали/вертикали.

Работа со шрифтами и текстом

Функция Описание
pygame.font.init() Инициализация модуля шрифтов.
pygame.font.SysFont(name, size) Загружает системный шрифт.
pygame.font.Font(path, size) Загружает шрифт из файла.
font.render(text, antialias, color) Рендерит текст в Surface.

Работа со звуком

Функция Описание
pygame.mixer.init() Инициализация звукового модуля.
pygame.mixer.Sound(file) Загружает короткий звук.
sound.play() Воспроизводит звук.
pygame.mixer.music.load(file) Загружает фоновую музыку.
pygame.mixer.music.play(loops=0) Воспроизводит музыку.
pygame.mixer.music.stop() Останавливает музыку.
pygame.mixer.music.pause() / unpause() Приостанавливает / возобновляет воспроизведение.

Работа со временем

Функция Описание
pygame.time.Clock() Объект для управления частотой кадров.
clock.tick(fps) Ограничивает частоту кадров.
pygame.time.get_ticks() Время с запуска pygame (в миллисекундах).
pygame.time.delay(ms) Пауза в миллисекундах (блокирует поток).

Основной игровой цикл (шаблон)

python
import pygame pygame.init() screen = pygame.display.set_mode((640, 480)) clock = pygame.time.Clock() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill((0, 0, 0)) # Очистка экрана pygame.display.flip() # Обновление экрана clock.tick(60) # 60 кадров в секунду pygame.quit()

Установка

bash
pip install pygame

Заключение

Pygame — это зрелая и мощная библиотека для разработки 2D-игр и мультимедийных приложений на Python. Её простота и богатство возможностей делают её отличным инструментом как для новичков, так и для опытных разработчиков. Начав с простого окна, вы можете развить проект до полноценной игры с меню, звуком, графикой и логикой уровней.