Professional Documents
Culture Documents
22. час_Библиотека Пајгејм. Инсталација и покретање библиотеке Пајгејм
22. час_Библиотека Пајгејм. Инсталација и покретање библиотеке Пајгејм
22. час_Библиотека Пајгејм. Инсталација и покретање библиотеке Пајгејм
Библиотека PyGame
Многој деци је приликом првог сусрета са језиком Python најинтересантније да раде са
корњачином графиком.
Подршка за тај облик цртања доступна је директно кроз стандардну библиотеку језика Python.
Ове године ћемо наставити у том смеру и упознаћемо се са једном графичком библиотеком која је
доста напреднија од корњачине графике.
У питању је библиотека PyGame, која, како јој име каже, служи за програмирање игара помоћу
језика Python.
Програмирање чак и најзахтевнијих игара подразумева озбиљно програмерско знање и зато ћемо
се ове године задржати само на веома једноставним примерима.
Ипак, ако ти се оно што ове године будеш радио/радила допадне, препоручујемо ти да наставиш да
учиш PyGame и да покушаш да унапредиш своје вештине тако да можеш да направиш и неку мало
озбиљнију игру.
То је заиста веома једноставно. Довољно је да у командној линији откуцаш pip3 install pygame.
Командну линију покрећеш најлакше тако што држећи тастер windows притиснеш тастер r и онда
откуцаш cmd. Уколико добијеш поруку да команда pip3 не постоји,
онда пробај са py -3 -m pip install pygame.
Када извршиш инсталацију, најбоље је да одмах тестираш да је све протекло како треба тако што
ћеш:
покренути Python развојно окружење IDLE које је инсталирано као windows апкикација
у развојном окружењу IDLE отворити нови пројекат (opcija File/New)
у едитору који се појави откуцати програм који је приказан даље у тексту (можеш одатле да
га ископираш и само налепиш у едитор окружења IDLE)
снимити програм у датотеку пре покретања (опција File/Save as…)
покренути програм (опција Run/Run Module тј. F5 на тастатури)
Након покретања програма треба да се појави прозор у којем је нацртан један квадрат и који стоји
приказан три секунде.
Програм за проверу исправности инсталације библиотеке PyGame:
import pygame
pygame.init()
prozor = pygame.display.set_mode((200, 200))
prozor.fill(pygame.Color("white"))
pygame.draw.rect(prozor, pygame.Color("black"), (20, 20, 160, 160), 5)
pygame.display.update()
pygame.time.wait(3000)
pygame.quit()
Библиотека PygameBg
Програмски кôд на почетку и на крају програма може се прилично скратити ако се користи
библиотека PyGameBg (PyGame Toolbox for Beginners by Petlja) и ми ћемо је интензивно користити у
раду на порталу Petlja.org.
Њу веома једноставно можеш инсталирати на свом рачунару навођењем команде
Након инсталације провери да ли је све у реду тако што ћеш покренути наредни програм у
окружењу IDLE.
Програмски кôд на почетку и на крају програма се може прилично скратити ако се користи
библиотека PyGameBg (PyGame Toolbox for Beginners by Petlja).
Када се ова библиотека користи, довољно је да на почетку позовеш функцију за отварање
прозора pygamebg.open_window којој наводиш редом ширину, висину и наслов прозора (два
природна броја и ниску), а да на крају програма позовеш функцију pygamebg.wait_loop() којом
проузрокујеш да се цртеж прикаже у прозору и да прозор остане приказан све док га корисник не
искључи.
Уз коришћење ове библиотеке, наш први програм се може написати на следећи начин:
import pygame as pg
import pygamebg
#otvaramo prozor
(sirina , visina) = (400 , 400)
prozor = pygamebg.open_window(sirina, visina, “Pygame“)
# crtamo crnu duž od tačke (100, 100) do tačke (300, 300) debljine 5
pg.draw.line(prozor, pg.Color("black"), (100, 100), (300, 300), 5)
Ако радиш на свом локалном рачунару (на пример, у окружењу Python IDLE), тада не мораш да
крећеш од празног програма, већ нови програм можеш започети тако што са Петље ископираш
наредни програм и онда измениш само његов централни („бели”) део (који тренутно садржи само
наредбе prozor.fill и pg.draw.line).
Након копирања нећеш видети да је део кода сиве боје – већ ћеш просто добити цео код, али сам ја
– наставник –оставио овде у примеру део који је сив.
import pygame as pg
import pygamebg
# otvaramo prozor
(sirina, visina) = (400, 400)
prozor = pygamebg.open_window(sirina, visina, "Pygame")
# crtamo crnu duž od tačke (100, 100) do tačke (300, 300) debljine 5
pg.draw.line(prozor, pg.Color("black"), (100, 100), (300, 300), 5)
import pygame as pg
import pygamebg
# otvaramo prozor
(sirina, visina) = (400, 400)
prozor = pygamebg.open_window(sirina, visina, "Боја позадине")
Примери: Ако уместо знака ??? унесемо неке називе боја добићемо
Још једна грешка је да назив боје не наведеш под наводницима (на пример, да
наведеш pg.Color(white)).
Можда ћеш пожелети да поред основних боја, које се могу добити на основу њиховог имена,
самостално дефинишеш неку своју боју тј. нијансу.
Светло било које боје се може добити комбиновањем светла црвене (Red), зелене (Green) и плаве
(Blue) боје.
На пример, комбиновањем црвеног и зеленог светла добија се жуто светло, комбиновањем црвеног
и плавог љубичасто, а комбиновањем плаве и зелене добијамо резедо боју.
Комбиновањем светла све три основне боје добија се бело светло док се црно светло добија када
се сва три светла искључе. Сиво светло се добија када се измеша подједнака количина, црвеног,
зеленог и плавог светла.
Боју тако можемо описати наводећи три броја (у овом случају то су бројеви од 0 до 255), који редом
представљају количину црвене, зелене и плаве компоненте у боји коју дефинишемо.
У програмском језику Python боју, дакле, можеш представити и тројком бројева и то у облику трочлане
уређене торке (нпр. (123, 80, 56)) или трочлане листе (нпр. [123, 80, 56]).
Торку или листу можеш навести директно као аргумент функције који одговара боји, а можеш је упамтити у
променљивој и касније користити више пута.
На пример, доделом REZEDO = (0, 255, 255) дефинишемо резедo боју (каже се и тиркизна или цијан)
наводећи одговарајуће количине црвене, зелене и плаве светлости коју ова боја садржи (пошто је то
мешавина плаве и зелене боје у њој нема нимало црвене, а плава и зелена компонента су на максимуму).
Након тога, ту боју можемо употребити и у позиву функције (нпр. prozor.fill(REZEDO)).
Имена тих променљивих не морају бити написана великим словима, али то је добар обичај.
Приметимо да се жута боја добија мешањем црвене и зелене, љубичаста мешањем црвене и плаве, а резедo
мешањем зелене и плаве.
Нијансе сиве боје су препознатљиве по томе што је у њима количина црвене, зелене и плаве једнака (на
основу тога можемо сматрати да су црна и бела екстремно тамна и екстремно светла нијанса сиве).
import pygame as pg
import pygamebg
# otvaramo prozor
(sirina, visina) = (400, 400)
prozor = pygamebg.open_window(sirina, visina, "Боје - RGB")
Цртање дужи
Све функције за цртање у библиотеци Pygame почињу са py.draw.
Прво ћемо се позабавити цртањем дужи. Дуж AB се црта позивом функције pg.draw.line.
Већ смо видели пример позива
pg.draw.line(prozor, pg.Color("black"), (100, 100), (300, 300), 5).
Приметимо да смо у решењу увели променљиву debljina да бисмо дебљину обе линије могли да
контролишемо само на једном месту.
Ова променљива је постављена (иницијализована) на почетку на 10 (наредбом
доделе debljina = 10) и променом вредности ове променљиве мења се дебљина све три дужи које
чине наше слово.
И у наредним програмима ћемо уводити помоћне променљиве које ће нам помоћи да лакше
пишемо и прилагођавамо наше програме.
import pygame as pg
import pygamebg
# otvaramo prozor
(sirina, visina) = (200, 200)
prozor = pygamebg.open_window(sirina, visina, "Слово А")
# debljina linije
debljina = 10
Унеси одговарајуће координате – уређене парове, уместо знака ???, ???, тако да се извршавањем програма исцрта
слово А:
Решење: