Pygame. Введение в разработку игр на Python. Курс
Курс "Pygame. Введение в разработку игр на Python" знакомит с базовыми особенностями программирования игр и основными возможностями библиотеки Pygame.
Необходимый предварительный минимум для успешного освоения курса – знание структурного (условия, циклы, функции) и объектно-ориентированного программирования на Python. Желательно хотя бы поверхностное знакомство с программированием приложений с графическим интерфейсом пользователя.
В данном курсе акцент сделан на изучение основных функций и классов библиотеки Pygame, а не на разработку конечных игр. Основные цели курса – познакомиться с особенностями программирования игр и научиться понимать код, использующий Pygame. В последующем это позволит самостоятельно разбирать и понимать длинные примеры написанных на Python и Pygame игр, которых достаточно много в Интернете.
Курс не включает полное описание библиотеки, не дублирует документацию. Вместо этого шаг за шагом, от простого к сложному рассматриваются назначение и принцип работы основных компонентов библиотеки Pygame в приложении к разработке тех или иных элементов компьютерной игры.
Курс состоит из двенадцати уроков, 11 из которых включают практическую работу. Первый урок-лекция дает общее представление о разработке игр и Pygame.
Версия курса: Июль, 2025 г.
Содержание курса
Pygame и разработка игр. Установка
Pygame - это библиотека для разработки игр на языке программирования Python. Рассматриваются установка pygame, его особенности и разработки игр в общем.
Каркас игры на Pygame
Базовая структура игры на pygame: импорт, главное окно и его обновление, главный цикл, цикл перебора событий, частота обновления окна и задержка.
Модуль pygame.draw – геометрические примитивы. Анимация
Модуль pygame.draw содержит функции рисования геометрических примитивов: rect - прямоугольник, line - отрезок, lines - ломаная линия, polygon - многоугольник, circle - круг, ellipse - овал, arc - дуга и др.
События клавиатуры
Pygame регистрирует два типа событий клавиатуры - клавиша нажата (KEYDOWN) и клавиша выпущена (KEYUP). При обработки длительных нажатий клавиш (зажатий) используется функция get_pressed() модуля pygame.key.
События мыши
В pygame обрабатываются три типа событий мыши: нажатие и отпускание кнопок (MOUSEBUTTONDOWN и MOUSEBUTTONUP), перемещение мыши (MOUSEMOTION). Какая кнопка была нажата, записывается в свойство button, координаты клика - в свойство pos.
Класс Surface и метод blit
В pygame одну из центральных ролей играют класс Surface (поверхность) и его метод blit(). С помощью blit() поверхности отображаются на главном окне и друг на друге. Методу, кроме экземпляра Surface, также передаются координаты.
Класс Rect. Использование с Surface
С помощью класса Rect создаются прямоугольные области для хранения координат и размеров. С помощью методов Rect можно изменять свойства областей. Экземпляры данного класса используются для управления поверхностями - экземплярами класса Surface.
Модуль pygame.image. Использование изображений
Функция load() модуля pygame.image загружает изображение из файла и возвращает экземпляр Surface. К таким поверхностям рекомендуется применять методы convert() или convert_alpha(), которые переводят формат кодирования пикселей поверхности в формат кодирования пикселей главной поверхности. При выполнении игры это ускоряет отрисовку поверхностей.
Классы Sprite и Group
На базе класса Sprite создаются игровые объекты, которые можно группировать с помощью класса Group и подобных. Модуль pygame.sprite содержит ряд функций проверки столкновений спрайтов.
Модуль pygame.transform. Трансформации поверхностей
Функции модуля pygame.transform обычно используются для поверхностей-изображений, чтобы изменить их размер, повернуть, изменить цвет и др. Благодаря этому персонаж в игре может поворачиваться, уменьшаться или увеличиваться, деформироваться, становиться серым или цветным.
Шрифты и текст. Модуль pygame.font и метод render
С помощью классов Font и SysFont модуля pygame.font создаются объекты-шрифты. Их метод render() создает поверхность с текстом, которую можно отобразить на другом экземпляре Surface с помощью метода blit().
Класс Sound и модуль pygame.mixer.music
Модули pygame.mixer для многоканального аудио и pygame.mixer.music для потокового аудио позволяют настроить в игре звуки спецэффектов и фоновую музыку. В управлении звуками ключевую роль играет класс Sound.