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.

Література

[ред. | ред. код]