Pygame. Введение в разработку игр на Python. Курс

Курс "Pygame. Введение в разработку игр на Python" знакомит с базовыми особенностями программирования игр и основными возможностями библиотеки Pygame.

Необходимый предварительный минимум для успешного освоения курса – знание структурного (условия, циклы, функции) и объектно-ориентированного программирования на Python. Желательно хотя бы поверхностное знакомство с программированием приложений с графическим интерфейсом пользователя.

В данном курсе акцент сделан на изучение основных функций и классов библиотеки Pygame, а не на разработку конечных игр. Основные цели курса – познакомиться с особенностями программирования игр и научиться понимать код, использующий Pygame. В последующем это позволит самостоятельно разбирать и понимать длинные примеры написанных на Python и Pygame игр, которых достаточно много в Интернете.

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

Курс состоит из двенадцати уроков, 11 из которых включают практическую работу. Первый урок-лекция дает общее представление о разработке игр и Pygame.

Версия курса: Июль, 2025 г.

Содержание курса

  1. Pygame и разработка игр. Установка
    Pygame - это библиотека для разработки игр на языке программирования Python. Рассматриваются установка pygame, его особенности и разработки игр в общем.

  2. Каркас игры на Pygame
    Базовая структура игры на pygame: импорт, главное окно и его обновление, главный цикл, цикл перебора событий, частота обновления окна и задержка.

  3. Модуль pygame.draw – геометрические примитивы. Анимация
    Модуль pygame.draw содержит функции рисования геометрических примитивов: rect - прямоугольник, line - отрезок, lines - ломаная линия, polygon - многоугольник, circle - круг, ellipse - овал, arc - дуга и др.

  4. События клавиатуры
    Pygame регистрирует два типа событий клавиатуры - клавиша нажата (KEYDOWN) и клавиша выпущена (KEYUP). При обработке длительных нажатий клавиш (зажатий) используется функция get_pressed() модуля pygame.key.

  5. События мыши
    В pygame обрабатываются три типа событий мыши: нажатие и отпускание кнопок (MOUSEBUTTONDOWN и MOUSEBUTTONUP), перемещение мыши (MOUSEMOTION). Какая кнопка была нажата, записывается в свойство button, координаты клика - в свойство pos.

  6. Класс Surface и метод blit
    В pygame одну из центральных ролей играют класс Surface (поверхность) и его метод blit(). С помощью blit() поверхности отображаются на главном окне и друг на друге. Методу, кроме экземпляра Surface, также передаются координаты.

  7. Класс Rect. Использование с Surface
    С помощью класса Rect создаются прямоугольные области для хранения координат и размеров. С помощью методов Rect можно изменять свойства областей. Экземпляры данного класса используются для управления поверхностями - экземплярами класса Surface.

  8. Модуль pygame.image. Использование изображений
    Функция load() модуля pygame.image загружает изображение из файла и возвращает экземпляр Surface. К таким поверхностям рекомендуется применять методы convert() или convert_alpha(), которые переводят формат кодирования пикселей поверхности в формат кодирования пикселей главной поверхности. При выполнении игры это ускоряет отрисовку поверхностей.

  9. Классы Sprite и Group
    На базе класса Sprite создаются игровые объекты, которые можно группировать с помощью класса Group и подобных. Модуль pygame.sprite содержит ряд функций проверки столкновений спрайтов.

  10. Модуль pygame.transform. Трансформации поверхностей
    Функции модуля pygame.transform обычно используются для поверхностей-изображений, чтобы изменить их размер, повернуть, изменить цвет и др. Благодаря этому персонаж в игре может поворачиваться, уменьшаться или увеличиваться, деформироваться, становиться серым или цветным.

  11. Шрифты и текст. Модуль pygame.font и метод render
    С помощью классов Font и SysFont модуля pygame.font создаются объекты-шрифты. Их метод render() создает поверхность с текстом, которую можно отобразить на другом экземпляре Surface с помощью метода blit().

  12. Класс Sound и модуль pygame.mixer.music
    Модули pygame.mixer для многоканального аудио и pygame.mixer.music для потокового аудио позволяют настроить в игре звуки спецэффектов и фоновую музыку. В управлении звуками ключевую роль играет класс Sound.