PyGame — это популярная библиотека для разработки 2D игр на Python. Первоначальная версия PyGame была представлена Питом Шиннерсом в октябре 2000 года, и с тех пор библиотека постепенно завоевала популярность благодаря простоте в использовании, хорошей документации и активному сообществу. Изначально PyGame создавался для работы с ранними версиями Python (в том числе Python 2) и основывался на библиотеке SDL 1. SDL – это кроссплатформенная библиотека на языке C, предоставляющая низкоуровневый доступ к аудиоустройствам, клавиатуре, мыши и графическим функциям через OpenGL, DirectX и др.
Актуальными являются версия 2.x, которые полностью поддерживают Python 3 (начиная с 3.7 и выше) и имеет ряд обновлений, включая улучшенную поддержку OpenGL, аппаратное ускорение, а также возможность работы с вертикальной синхронизацией на мониторах (VSync).
В данной статье рассмотрено необычное применение PyGame – это быстрый вывод графиков, например, потоков данных с частотой дискретизации 44100 Гц со звуковой карты, что может быть необходимо для визуализации звуковых сигналов.
Для такой задачи хорошо подходят следующие функции и возможности PyGame:
pygame.display.flip() очень быстро обновляет содержимое экрана после произведённых изменений.
С помощью pygame.time.Clock() можно контролировать FPS, что позволяет требовать от системы обновление до 60 кадров и более в секунду, что важно при отображении сигналов в реальном времени.
-
Новый флаг vsync (например, передаваемый в set_mode с параметром pygame.RESIZABLE или pygame.OPENGL) может использоваться для синхронизации обновления экрана с вертикальной разверткой дисплея.
Основной цикл (обычный в PyGame):
running = True
while running:
# Обработка событий
# Генерация шума и обновление данных графика
# Очистка экрана
# Отрисовка сетки и графика
# Подсчет и отображение FPS
# Обновление экрана
pygame.display.flip()
clock.tick(FPS)
pygame.quit()
Исходные коды для PyGame и других графических пакетов можно посмотреть в моей статье: Визуализация данных в реальном времени. Matplotlib, PyQTGraph, pyOpenGL, VisPy, Bokeh и др.
import pygame, sys
# pygame app for figure to run
pygame.init()
screen = pygame.display.set_mode((800,600))
# Figure instance on screen with position and size
figure = pyc.Figure(screen, 50, 50, 700, 500)
while True:
events = pygame.event.get()
for event in events:
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
# add a line chart. First argument "name" should be unique for every chart
figure.line('Chart1', [1,2,3,4,6,20,24],[3,5,7,2,7,9,1])
# draw figure with specified properties
figure.draw()
pygame.display.update()
![График с использованием PyGame График с использованием PyGame](https://habrastorage.org/getpro/habr/upload_files/3f9/8d7/000/3f98d7000152bfcbbc1842e629c60713.jpeg)
Ниже несколько популярных игр, разработанных с использованием PyGame:
1. "The Battle for Wesnoth"
Год выпуска: 2005 (первая версия на PyGame)
Игровая аудитория: Стратегия, пошаговая
Число установок: Несколько миллионов (включая версии на других языках)
Описание: Пошаговая стратегическая игра с элементами фэнтези. Игра имеет открытый исходный код и активно развивается сообществом.
Скриншоты: Страница игры на SourceForge
2. "Freedoom"
Год выпуска: 2009 (первая версия на PyGame)
Игровая аудитория: Экшен, шутер от первого лица
Число установок: Несколько сотен тысяч
Описание: Свободная версия классического шутера от первого лица Doom. Использует движок, написанный на PyGame.
Скриншоты: Официальный сайт Freedoom
3. "PySolFC"
Год выпуска: 2003 (первая версия на PyGame)
Игровая аудитория: Логические, карточные игры
Число установок: Несколько сотен тысяч
Описание: Коллекция карточных пасьянсов. Игра имеет множество режимов и уровней сложности.
Скриншоты: PySolFC на GitHub
4. "Save the Date"
Год выпуска: 2013
Игровая аудитория: Инди, визуальная новелла
Число установок: Несколько десятков тысяч
Описание: Интерактивная визуальная новелла с элементами головоломки. Игра получила положительные отзывы за оригинальный сюжет и стиль.
Скриншоты: IndieDB
5. "Dino Run"
Год выпуска: 2008
Игровая аудитория: Экшен, бесконечный раннер
Число установок: Несколько сотен тысяч
Описание: Игра в жанре бесконечного раннера, где игрок управляет динозавром, убегающим от катаклизма. Игра получила популярность благодаря своей простой механике и высокой реиграбельности.
Скриншоты: Официальный сайт Dino Run
6. "Tux Racer"
Год выпуска: 2000 (первая версия на PyGame)
Игровая аудитория: Гонки, экшен
Число установок: Несколько сотен тысяч
Описание: Аркадная игра, где игрок управляет пингвином, катающимся на лыжах. Игра была популярна среди пользователей Linux.
Скриншоты: Tux Racer на SourceForge
zabanen2
похоже, вы ничего не усвоили из комментариев к прошлой статье