Pygame

Pygame
ТипAPI
РозробникPygame Community
Стабільний випуск2.1.2 (26 грудня 2021; 2 роки тому (2021-12-26))
Операційна системаБагатоплатформність
Мова програмуванняC і Python[1]
ЛіцензіяGNU Lesser General Public License
Репозиторійgithub.com/pygame/pygame/
Вебсайтpygame.org

Pygame — набір кросплатформенних модулів для мови програмування Python, створений для розробки відеоігор. Включає в себе бібліотеки комп'ютерної графіки і звуку на базі SDL.

Історія розробки

Pygame був розроблений Піттом Шінером в 2000-му році, як заміну застарілому pySDL. Метою автора було ефективно поєднати Python з SDL. Pygame має наближений до обʼєктно-орієнтованого інтерфейс, що робить його більш нативним з Python, ніж pySDL, який мав "вплив" стилю C (мова програмування)[2].

Зараз розробка ведеться відкрито спільнотою Pygame, бібліотека поширюєтся як вільне програмне забезпечення GNU Lesser General Public License.

Підтримка

Підтримує Linux (pygame входить до складу найпопулярніших його дистрибутивів), Windows (95, 98, me, 2000, XP, Vista, 7, 8, 10), Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, та QNX. Код також може підтримувати AmigaOS, Dreamcast, Atari, AIX, OSF/Tru64, RISC OS, SymbianOS, та OS/2, але це не офіційні розширення. Також підтримку отримала Android.

Особливості

Функції ядра бібліотеки написані на С та Assembly. Це робить pygame дедалі швидшим, через те, що С код зазвичай в 10-20 разів швидший за Python, а Assembly в свою чергу в 100 раз швидший, ніж Python.

Також в залежностях pygame немає OpenGL, що забезпечує простішу розробку та портативність.

Модулі Pygame

Pygame має функцію pygame.init(), яка ініціалізує всі модулі бібліотеки.

pygame.init()

Нині в версії 2.1.2 Pygame присутні такі модулі [[2]]

  • pygame._sdl2.controller - модуль для роботи з контролерами
  • pygame._sdl2.touch - модуль для роботи з сенсорним екраном
  • pygame._sdl2.video - експериментальний модуль для портування нових відео систем SDL.
  • pygame.camera - модуль для отримання зображення з камери
  • pygame.cdrom - модуль управління пристроями компакт-дисків і відтворення звуку
  • pygame.cursors - модуль завантаження зображень курсору, включає стандартні курсори
  • pygame.display - модуль управління вікном або екраном
screen = pygame.display.set_mode((1080,720)) #Створюємо вікно розміром 1080 на 720 пікселів
  • pygame.draw - модуль малювання графічних примітивів на поверхні (клас Surface)
pygame.draw.rect(screen, (255, 255, 255), (20, 20, 100, 75)) #Малюємо прямокутник білого кольору на поверхні screen
pygame.draw.rect(screen, (64, 128, 255), (150, 20, 100, 75), 8) #Малюємо прямокутник білого кольору на поверхні screen з краєм в 8 пікселів
  • pygame.examples - модуль який містить приклади використання Pygame
  • pygame.event - модуль управління подіями і чергою подій
  • pygame.fastevent - модуль для багатопоточного управлінням подіями та чергою подій
  • pygame.font - модуль завантаження та відображення тексту, використовує TrueType
  • pygame.freetype - вдосконалений модуль завантаження та відображення тексту, використовує FreeType
font_a = pygame.font.SysFont('arial', 36) #Завантажуємо шрифт, який вже є встановленим на пристрої
fonta_b = pygame.font.Font('/usr/share/fonts/truetype/msttcorefonts/Arial.ttf', 36) #Завантажуємо шрифт з файлу
  • pygame.gfxdraw - модуль для відображення графічних примітивів
  • pygame.image - модуль збереження і завантаження зображень
dog_image = pygame.image.load('dog.bmp') #Завантажуємо зображення 
dog_image.set_colorkey((255, 255, 255))  #Встановлюємо колір альфа-каналу(для прозорості)
  • pygame.joystick - модуль для взаємодії з джойстиком, геймпадом та трекболом
  • pygame.key - модуль управління клавіатурою
  • pygame.locals - модуль з константами Pygame
  • pygame.mask - модуль для використання масок зображення
  • pygame.math - модуль який містить математичні вектори
  • pygame.midi - модуль взаємодії з MIDI портами
  • pygame.mixer - модуль для завантаження та відтворення звуку
  • pygame.mixer.music - модуль контролю поточного звуку
  • pygame.mouse - модуль управління мишею
  • pygame.movie - модуль програвання MPEG кліпів(застарілий модуль, відсутній в нових версіях)[3]
  • pygame.pixelcopy - модуль для загального копіювання масиву пікселів
  • pygame.scrap - модуль для взаємодії з буфером обміну
  • pygame.sndarray - модуль управління звуками за допомогою класу Numeric
  • pygame.surfarray - модуль управління зображеннями за допомогою класу Numeric
  • pygame.sprite - модуль для роботи зі спрайтами
  • pygame.surfarray - модуль який конвертує зображення в масив пікселів
  • pygame.tests - модуль для зручного тестування бібліотеки
  • pygame.time - модуль управління часом та таймерами
  • pygame.transform - модуль зміни розмірів, обертання і зміна орієнтації зображень
dog_image = pygame.transform.flip(dog_image, 1, 0) #Функція повертає відзеркалене зображення по вертикалі
  • pygame.version - невеличкий модуль, який містить в собі інформацію про версію Pygame

Спільнота

Спільнота pygame — це невелика група волонтерів, які люблять створювати красиві речі. Як зазначено на офіційному сайті [Архівовано 22 вересня 2013 у Wayback Machine.], крім людей до спільноти належать декілька котів, коал, десяток собак, 3.14 гномів і 42 робота.

Hello World!

Приклад програми з використанням Pygame з офіційного сайту [Архівовано 10 квітня 2022 у Wayback Machine.] [Архівовано 10 квітня 2022 у Wayback Machine.]

import sys, pygame
pygame.init()

size = width, height = 320, 240
speed = [2, 2]
black = 0, 0, 0

screen = pygame.display.set_mode(size)

ball = pygame.image.load("intro_ball.gif")
ballrect = ball.get_rect()

while 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT: sys.exit()

    ballrect = ballrect.move(speed)
    if ballrect.left < 0 or ballrect.right > width:
        speed[0] = -speed[0]
    if ballrect.top < 0 or ballrect.bottom > height:
        speed[1] = -speed[1]

    screen.fill(black)
    screen.blit(ball, ballrect)
    pygame.display.flip()

Див. також

  • Pyglet - бібліотека Python що надає об'єктно-орієнтований інтерфейс до OpenGL
  • PyOpenGL - бібліотека з біндингами OpenGL під Python

Примітки

  1. The pygame Open Source Project on Open Hub: Languages Page — 2006.
  2. а б Pygame Intro — pygame v2.1.1 documentation. www.pygame.org (Англійська) . Архів оригіналу за 10 квітня 2022. Процитовано 6 травня 2022.
  3. [pygame] NO MOVIE module in Pygame??. groups.google.com (Англійська) . Архів оригіналу за 6 травня 2022. Процитовано 6 травня 2022.

Література