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.

Література[ред. | ред. код]