Эссе Баранов
Содержание |
Pygame
В своем эссе я хотел бы рассказать о так называемой "игровой библиотеке" для Python.
Pygame — это библиотека, набор инструментов, помогающих программистам создавать игры.
К ним относятся:
- Графика и анимация
- Звук (включая музыку)
- Управление (мышь, клавиатура, геймпад и так далее)
Документация, обучающие материалы и дополнительная информация доступна разработчикам на сайте проекта: Pygame Front Page
Модули Pygame
Библиотека содержит в себе множество модулей необходимых разработчикам игр для реализации своих проектов:
Из приведенного списка видно, что данная библиотека предоставляет множество возможностей именно для игровых разработок. Это и рисование, и возможность добавления видео и звука, и работа с системным временем, а также, так сильно необходимый при разработке обработчик событий. На котором я бы хотел заострить внимание.
Обработка событий
Событие - это то, как Pygame сообщает о том, что что-то случилось за пределами кода программы. События создаются, например, при нажатии клавиш клавиатуры, мыши и размещаются в очереди, дожидаясь обработки.
Функция get в модуле pygame.event возвращает последнее событие, ожидающее в очереди и удаляет его из очереди.
Pygame отслеживает все сообщения о событиях через очередь событий. Процедуры в этом модуле помогают управлять этой очередью событий. Входная очередь сильно зависит от модуля отображения (display) pygame. Если дисплей не был инициализирован и видеорежим не установлен, очередь событий не будет работать.
Существует множество способов доступа к очереди событий. Просто проверять существование событий, захватывать их непосредственно из стека.
Мышь и клавиатура
Основные события, которые практически постоянно необходимо отслеживать внутри игры это, конечно же, нажатия кнопок мыши и клавиатуры, а также перемещение курсора.
Для этого в библиотеке есть модули pygame.mouse и pygame.key.
Функции мыши можно использовать для получения текущего состояния устройства мышь. Эти функции также могут изменять курсор мыши.
Когда режим отображения (display) установлен, очередь событий начнет принимать события мыши. Кнопки мыши генерируют события pygame.MOUSEBUTTONDOWN и pygame.MOUSEBUTTONUP, когда они нажимаются и отпускаются. Эти события содержат атрибут кнопки, указывающий, какая кнопка была нажата. Колесо мыши будет генерировать pygame.MOUSEBUTTONDOWN и pygame.MOUSEBUTTONUP события при прокрутке.
Когда колесо повернуто вверх, кнопка будет установлена на 4, вниз -5. Всякий раз, когда мышь перемещается, генерируется событие pygame.MOUSEMOTION. Движение мыши разбито на небольшие и точные события движения. По мере перемещения мыши многие события движения будут помещены в очередь. События движения мыши, которые неправильно очищены от очереди событий, являются основной причиной того, что очередь событий заполняется.
Модуль pygame.key
Этот модуль содержит функции для работы с клавиатурой. Очередь событий получает события pygame.KEYDOWN и pygame.KEYUP при нажатии и отпускании клавиш клавиатуры.
Оба события имеют ключевой атрибут, который представляет собой целочисленный идентификатор, представляющий каждую клавишу на клавиатуре.Событие pygame.KEYDOWN имеет дополнительные атрибуты: unicode и scancode. unicode представляет собой одну символьную строку, которая соответствует введённому символу. Scancode представляет собой код для конкретной платформы.
Получить код клавиши:
pressed_keys = pygame.key.get_pressed() if pressed_keys[K_SPACE]: # Space key has been pressed fire()
Существует много клавиатурных констант, они используются для представления клавиш на клавиатуре.
Заключение
По своему назначению Pygame можно считать игровым движком. В то же время, с точки зрения классификации программного обеспечения, Pygame является API для Питона к API библиотеки SDL.
API – это интерфейс (в основном набор функций и классов) для прикладного (часто более высокоуровневого) программирования, который предоставляет, например, та или иная библиотека.
SDL – это библиотека, которая работает с мультимедийными устройствами компьютера.
В этом смысле Pygame можно сравнить с Tkinter, который через свои функции и классы предоставляет Питону доступ к графической библиотеке Tk.
Данная библиотека пользуется большой популярностью у начинающих разработчиков игр. Благодаря простоте использования с ее помощью можно создавать 2D игры для различных платформ.