Введение в Pygame
Pygame - это мультимедийная библиотека для Python, предназначенная для создания игр и мультимедийных приложений. Она является оболочкой библиотеки SDL (Simple DirectMedia Layer).
Импортируйте модуль
Чтобы использовать методы из библиотеки Pygame, модуль должен быть сначала импортирован:
Инструкция Pygame import всегда размещается в начале программы. Она импортирует классы,методы и атрибуты pygame в текущее пространство имен. Теперь эти новые методы можно вызывать с помощью pygame.method(). Например, теперь мы можем инициализировать pygame или выйти из него с помощью следующей команды:
Функция display.set_mode() устанавливает размер экрана. Она возвращает объект Surface, который мы присваиваем переменной screen. Эта переменная будет одной из наиболее часто используемых переменных. Она представляет окно, которое мы видим:
Теперь вы можете запустить эту программу и протестировать ее. На данный момент она практически ничего не делает. Она открывает окно и сразу же закрывает его.
Показать цикл обработки событий
Наиболее важной частью любого интерактивного приложения является цикл обработки событий. Реагирование на события позволяет пользователю взаимодействовать с приложением. События - это то, что может происходить в программе, например щелчок мыши, движение мыши, нажатие на клавиатуру, действие джойстика. Ниже приведен бесконечный цикл, который выводит все события на консоль:
Попробуйте переместить мышь, нажать на кнопку мыши или набрать что-либо на клавиатуре. Каждое выполняемое вами действие приводит к появлению события, которое выводится на консоль. Это будет выглядеть примерно так:
Поскольку мы находимся в бесконечном цикле, выйти из этой программы из приложения невозможно. Чтобы выйти из программы, сделайте консоль активным окном и нажмите ctrl-C. В результате на консоль будет выведено следующее сообщение:
Правильно завершите цикл обработки событий
Чтобы правильно завершить работу приложения, из приложения, используя кнопку закрытия окна (событие ВЫХОДА), мы изменяем цикл обработки событий. Сначала мы вводим логическую переменную running и присваиваем ей значение True. В цикле обработки событий мы проверяем наличие события ВЫХОДА. Если это произойдет, мы установим значение running равным False:
Завершив цикл обработки событий, мы вызываем функцию pygame.quit(), чтобы корректно завершить работу приложения.
Определите цвета
Цвета определяются как наборы базовых цветов - красного, зеленого и синего. Это называется RGB-моделью. Каждый базовый цвет представлен в виде числа от 0 (минимум) до 255 (максимум), которое занимает 1 байт в памяти. Таким образом, цвет RGB представляется в виде 3-байтового значения. В результате смешивания двух или более цветов получаются новые цвета. Таким образом можно представить в общей сложности 16 миллионов различных цветов. Давайте определим базовые цвета как кортежи базовых значений дерева. Поскольку цвета являются константами, мы будем записывать их заглавными буквами. Отсутствие всех цветов приводит к появлению черного. Максимальное значение для всех трех компонентов приводит к появлению белого.
Три одинаковых промежуточных значения отображаются серым цветом
В конце цикла обработки событий мы добавляем следующее:
Метод fill(color) заполняет весь экран указанным цветом. На этом этапе ничего отображаться не будет. Чтобы что-либо отобразить, необходимо вызвать функцию pygame.display.update().
Переключите цвет фона
В начале программы мы добавляем новый проверяемый фон и инициализируем его серым цветом:
В цикле обработки событий мы ищем события нажатия клавиш. Если они найдены, мы проверяем, были ли нажаты клавиши R или G, и меняем цвет фона на красный (R) и зеленый (G). Это код, добавленный в цикл обработки событий:
В разделе рисования мы теперь используем переменную background, представляющую цвет фона:
Протестируйте программу. Нажатие клавиш R и G позволяет переключать цвет фона.
Импорт pygame.locals
Модуль pygame.locals содержит около 280 констант, используемых и определенных в pygme. Если поместить эту инструкцию в начало вашей программы, все они будут импортированы:
Мы находим ключевые модификаторы (alt, ctrl, cmd и т.д.).
цифровые клавиши:
специальные символьные клавиши:
буквенные клавиши алфавита:
Вместо того, чтобы писать pygame.KEYDOWN теперь мы можем просто написать KEYDOWN
1.7 Используйте словарь для расшифровки ключей
Самый простой способ расшифровать множество клавиш - использовать словарь. Вместо того, чтобы определять множество вариантов if-else, мы просто создаем словарь с записями клавиш клавиатуры. В этом примере мы хотим связать 8 разных клавиш с 8 разными цветами фона. В начале программы мы определяем этот словарь ключевых цветов:
Печать словаря на консоль дает такой результат:
Здесь представлены ключи с их ASCII-кодом. Например, ASCII-код для k равен 107. Цвета представлены в виде кортежей. Черный цвет представлен как (0, 0, 0). Цикл обработки событий теперь становится очень простым. Сначала мы проверяем, является ли тип события событием нажатия клавиши. Если да, мы проверяем, есть ли ключ события в словаре. Если да, мы ищем цвет, связанный с этим ключом, и устанавливаем его в качестве фонового цвета:
Попробуйте нажать 8 указанных клавиш, чтобы изменить цвет фона
Измените заголовок окна
Функция pygame.display.set_caption(title) позволяет изменять заголовок окна приложения. Мы можем добавить это в цикл обработки событий:
При этом в заголовке окна будет отображено значение RGB текущего цвета фона.
Исследуйте простую игру с мячом
Чтобы показать, на что способна Pygame, приведем простую программу, которая демонстрирует анимацию прыгающего мяча. В программе используется класс Rect для представления прямоугольной области. Экземпляр создается на основе изображения мяча:
Прямоугольный объект имеет 4 атрибута:
Прямоугольный объект можно переместить с помощью метода move():
После импорта модуля pygame мы определяем несколько переменных, таких как размер экрана и два цвета:
Затем мы инициализируем pygame и создаем переменную screen:
Положение шара представлено прямоугольным объектом:
Внутри цикла обработки событий мы проверяем только наличие события QUIT:
Затем мы перемещаем прямоугольник и проверяем левую/правую и верхнюю/нижнюю границы:
Наконец, мы рисуем зеленый фон, красный прямоугольник и изображение шара:
Вот как выглядят шар и прямоугольный контур:
Попытайтесь понять, что делает программа. Затем попробуйте изменить ее параметры.