Pygame

Pygame
Тип API
Розробник Pygame Community
Стабільний випуск 2.1.2 (26 грудня 2021; 2 роки тому (2021-12-26))
Операційна система Багатоплатформність
Мова програмування C і Python[https://www.openhub.net/p/pygame/analyses/latest/languages_summary_The_pygame_Open_Source_Project_on_Open_Hub:_Languages_Page]<span_class="wef_low_priority_links"
Ліцензія GNU Lesser General Public License
Репозиторій github.com/pygame/pygame/
Вебсайт pygame.org

|maintainer=

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. [https://www.openhub.net/p/pygame/analyses/latest/languages_summary_The_pygame_Open_Source_Project_on_Open_Hub:_Languages_Page]<span_class="wef_low_priority_links" The pygame Open Source Project on Open Hub: Languages Page — 2006.
    d:Track:Q124688
  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.

Література

  • Game Programming the L Line — книга, яка знайомить з програмуванням і розробки ігор з Python і Pygame
  • Introduction to Computer Science Using Python and Pygame [Архівовано 3 вересня 2011 у Wayback Machine.] електронна книга, яка знайомить з програмуванням на Python і Pygame.


  • п
  • о
  • р
Загальне
Історія
ОС на базі ВПЗ
BSD · Apple Darwin · FreeDOS · FreeBSD · OpenBSD · FreeNAS · GNU · Haiku · Hurd · Inferno · Linux · Mach · MINIX · OpenSolaris · Plan 9 · ReactOS
Розробка ВПЗ[en]
Eclipse · FreeBASIC · Free Pascal · GCC · Java · libJIT[ru] · LLVM · Lua · Open64 · Perl · PHP · Python · ROSE[en] · Ruby · Tcl
Менеджери
вікон XWS
Blackbox Compiz EDE Enlightenment Fluxbox GNOME JWM IceWM KDE Openbox ROX[en] Window Maker[en] Xfce
Організації
Фонд вільного ПЗ (FSF) (європейський[en] індійський[en] латиноамериканський[en]) • Apache Software Foundation · Blender Foundation[en] · Eclipse Foundation · freedesktop.org · GNOME Foundation · Проєкт GNU · Google Code · Linux Foundation · Mozilla Foundation · Open Source Initiative · SourceForge · The Document Foundation · Xiph.Org · XMPP Standards Foundation[en] · X.Org Foundation
Ліцензії
Проблеми
Двійковий блоб · Технічні засоби захисту авторських прав · Вільні та відкриті графічні драйвери[en] · Ліцензійна проліферація · Iceweasel · Безпека відкритого ПЗ[en] · Власницьке програмне забезпечення · Конфлікт SCO—Linux · Програмні патенти · Тивоїзація · Trusted Computing · Апаратне обмеження[es] · Вірусна ліцензія
Інше
Визначення вільного ПЗ · Визначення Open Source · Альтернативні назви[en] · Рух · Вільне та відкрите ПЗ Microsoft Open Specification Promise[en] · Порівняння відкритих та закритих кодів[en] · Revolution OS · Собор і базар
  • п
  • о
  • р
Шутери від першої особи

Повністю вільні: BZFlag · Freedoom · OpenArena · Xonotic · Tremulous · Більше…

Частково вільні: Nexuiz  · World of Padman · CodeRED: Alien Arena · Smokin' Guns · War§ow · Cube · Cube 2: Sauerbraten
Стратегії
Freeciv · FreeCol · The Battle for Wesnoth · Widelands · Bos Wars · Spring[en] · Glest · Warzone 2100 · 0 A.D. · Lincity · Thousand Parsec · Більше…
Платформери
XEvil · SuperTux · Neverball · Secret Maryo Chronicles · Abuse · Jump 'n Bump · X-Moto · Blob Wars · Teeworlds · Більше…
Логічні ігри
Frozen Bubble · Pingus · Hex-a-Hop · Rocks'n'Diamonds · The Adventures of Robbo · Enigma · Fish Fillets NG · Heartlight · Більше…
Гонки та авіасимулятори
Tux Racer · TuxKart · SuperTuxKart · TORCS · RARS · VDrift · Armagetron Advanced · FlightGear · Vega Strike · Oolite · Більше гонок та авіасимуляторів…
Roguelike та рольові ігри
NetHack · Falcon's Eye · Slash'EM · Blades of Exile · Egoboo · Angband · Linley's Dungeon Crawl · Crossfire · WorldForge · Більше roguelike та рольових ігор…
Навчальні ігри
Tux Paint · Tux Typing · Tux, of Math Command · Food Force 2 · GCompris · PlayPower · Більше…
Інші
WarMUX · Hedgewars · Yo Frankie! · Liquid War · Frets on Fire · Simutrans · Chromium B.S.U. · Ігри для KDE · Ігри для GNOME · Більше…
Люди
Білл Кендрік, Райан С. Ґордон
Гральні рушії
OGRE · Irrlicht Engine · Pygame · Game Blender · Crystal Space · ioquake3 · Ren'Py · JMonkeyEngine · Genesis3D · Більше…