PyGame - догађаји¶
Питање 1.¶
Претпоставимо да смо дефинисали функцију obradi_dogadjaj и навели је у позиву функције pygamebg.frame_loop
def obradi_dogadjaj(dogadjaj): ... pygamebg.frame_loop(30, nov_frejm, obradi_dogadjaj)
Означи тачна тврђења.
- У функцији obradi_dogadjaj морамо да одреагујемо на сваки догађај који може да стигне до ове функције
- Нетачно
- У функцији obradi_dogadjaj можемо да одреагујемо на догађаје који нас интересују
- Тачно
- Ако у функцији obradi_dogadjaj не одреагујемо на неки догађај који је прослеђен функцији, тај догађај ће бити поново прослеђиван док не одреагујемо на њега.
- Нетачно
Q-319: Изабери тачан одговор:
Питање 2.¶
Нека је дат следећи програм.
import pygame as pg, pygamebg prozor = pygamebg.open_window(300, 300, "") def nov_frejm(): pass def obradi_dogadjaj(dogadjaj): if dogadjaj.type == pg.KEYDOWN: prozor.fill(pg.Color("white")) pg.draw.rect(prozor, pg.Color("yellow"), (50, 50, 200, 100)) pygamebg.frame_loop(30, nov_frejm, obradi_dogadjaj)
Означи тачна тврђења.
- Да би био приказан жути правоугаоник, неопходно је да корисник притисне тастер са стрелицом на доле.
- Нетачно
- Уколико корисник притисне било који тастер биће приказан жути правоугаоник.
- Тачно
- Прозор неће моћи да буде затворен док корисник не покрене догађај pg.KEYDOWN.
- Нетачно
Q-320: Изабери тачан одговор:
Питање 3.¶
Ако држимо притиснут неки тастер тастатуре (и нисмо претходно мењали подразумевани начин генерисања догађаја тастатуре)
- Догађај pygame.KEYDOWN се једном прослеђује функцији за обраду догађаја и то приликом спуштања тастера
- Тачно
- Догађај pygame.KEYDOWN се за то време стално прослеђује функцији за обраду догађаја
- Нетачно
- Систем може да пропусти да проследи догађај pygame.KEYDOWN ако је био заузет у тренутку притиска на тастер
- Нетачно
Q-321: Изабери тачан одговор:
Питање 4.¶
Који догађаји настају када „откуцамо” неко слово на тастатури?
- pygame.CLICKED
- Нетачно
- pygame.KEYDOWN
- Тачно
- pygame.KEYPRESSED
- Нетачно
- pygame.KEYUP
- Тачно
Q-322: Изабери тачан одговор:
Питање 5.*¶
Ако је реакција на догађаје дефинисана наредним кодом, шта је потребно да корисник уради да би плави круг био видљив?
def obradi_dogadjaj(dogadjaj): if dogadjaj.type == pg.KEYDOWN: pg.draw.circle(prozor, pg.Color("blue"), (200, 200), 100) elif dogadjaj.type == pg.KEYUP: pg.draw.circle(prozor, pg.Color("red"), (200, 200), 100)
- Плави круг ће постати и остати видљив након првог притиска на било који тастер.
- Нетачно
- Плави круг не може бити видљив, јер одмах по исцртавању бива прецртан црвеним кругом.
- Нетачно
- Плави круг ће бити видљив онолико дуго колико је тастер притиснут.
- Тачно
Q-323: Изабери тачан одговор:
Питање 6.*¶
Дата је функција за обраду догађаја:
def obradi_dogadjaj(dogadjaj): if dogadjaj.type == pg.KEYDOWN: pg.draw.circle(prozor, pg.Color("blue"), (200, 200), 100) pg.draw.circle(prozor, pg.Color("red"), (200, 200), 100)
Које тврђење је тачно?
- Плави круг ће постати и остати видљив након првог клика било ког тастера.
- Нетачно
- Плави круг не може бити видљив, јер одмах по исцртавању бива прецртан црвеним кругом.
- Тачно
- Плави круг ће бити видљив онолико дуго колико је тастер притиснут.
- Нетачно
Q-324: Изабери тачан одговор:
Питање 7.¶
Којим од понуђених линија кода се врши провера да ли је притиснут тастер слова A?
if (dogadjaj.type == pygame.KEYDOWN) and (dogadjaj.key == pygame.K_a):
if (dogadjaj.type == pygame.KEYDOWN) or (dogadjaj.key == pygame.K_a):
if (dogadjaj.type == pygame.K_a):
- 1
- Тачно
- 2
- Нетачно
- 3
- Нетачно
Q-325: Изабери тачан одговор:
Питање 8.*¶
Означи које од наредби је потребно у PyGame програму навести да би током његовог извршавања догађај био исправно регистрован.
- import pygame
- Тачно
- pygame.display.update()
- Нетачно
- pygame.display.set_mode()
- Тачно
- prozor.fill()
- Нетачно
- pygame.init()
- Тачно
Q-326: Изабери тачан одговор:
Питање 9.¶
Догађај затварања прозора је у PyGame библиотеци означен са:
- pygame.QUIT
- Тачно
- pygame.EXIT
- Нетачно
- pygame.CLOSE
- Нетачно
Q-327: Изабери тачан одговор:
Питање 10.¶
Позивом функције pygame.event.wait() се зауставља рад програма на 1 секунду.
- да
- Нетачно
- не
- Тачно
Q-328: Изабери тачан одговор:
Питање 11.¶
Функција pygame.event.wait() враћа информацију о томе који се догађај десио.
- да
- Тачно
- не
- Нетачно
Q-329: Изабери тачан одговор:
Питање 12.¶
Уколико се до позива функције pygame.event.wait() десило више догађаја који нису обрађени функција ће вратити информацију о последњем.
- да
- Нетачно
- не
- Тачно
Q-330: Изабери тачан одговор:
Питање 13.¶
Уколико у тренутку позива pygame.event.wait() нема необрађених догађаја функција даје поруку о грешци.
- да
- Нетачно
- не
- Тачно
Q-331: Изабери тачан одговор:
Питање 14.¶
Уколико у тренутку позива pygame.event.wait() нема необрађених догађаја рад програма се зауставља до првог наредног догађаја.
- да
- Тачно
- не
- Нетачно
Q-332: Изабери тачан одговор:
Питање 15.**¶
Који од програма ће при покретању радити све док корисник не затвори прозор?
import pygame as pg pg.init() prozor = pg.display.set_mode((300, 300)) prozor.fill(pg.Color("white")) pg.draw.rect(prozor, pg.Color("red"), (50, 50, 200, 100)) pg.display.update() pg.quit()
import pygame as pg pg.init() prozor = pg.display.set_mode((300, 300)) prozor.fill(pg.Color("white")) pg.draw.rect(prozor, pg.Color("red"), (50, 50, 200, 100)) pg.display.update() while pg.event.wait().type == pg.QUIT: pass pg.quit()
import pygame as pg pg.init() prozor = pg.display.set_mode((300, 300)) prozor.fill(pg.Color("white")) pg.draw.rect(prozor, pg.Color("red"), (50, 50, 200, 100)) pg.display.update() if pg.event.wait().type != pg.QUIT: pass
import pygame as pg pg.init() prozor = pg.display.set_mode((300, 300)) prozor.fill(pg.Color("white")) pg.draw.rect(prozor, pg.Color("red"), (50, 50, 200, 100)) pg.display.update() while pg.event.wait().type != pg.QUIT: pass pg.quit()
- 1
- Нетачно
- 2
- Нетачно
- 3
- Нетачно
- 4
- Тачно
Q-333: Изабери тачан одговор:
Питање 16.*¶
Следећа недовршена функција за обраду догађаја треба да провери да ли је кликнуто мишем на правоугаону слику димензија w_sl x h_sl, са горњим левим теменом у тачки (x_sl, y_sl).
def obradi_dogadjaj(dogadjaj): global __________ # А if dogadjaj.type == __________: # B x_mis, y_mis = __________ # C if (x_sl < x_mis and x_mis < x_sl + w_sl and __________): # D kliknuto_na_sliku = True
Делови који недостају функцији су набројани у наставку. Упиши редне бројеве делова који недостају функцији у редоследу у ком их треба убацити на места A, B, C, D редом (дакле, прво редни број дела који треба убацити на место A, итд.)
pg.MOUSEBUTTONDOWN
y_sl < y_mis and y_mis < y_sl + h_sl
kliknuto_na_sliku
dogadjaj.pos
Одговор:
Питање 17.*¶
Нека je sl слика коју програм у сваком фрејму приказује на позицији (x_sl, y_sl), а w_sl и h_sl нека су редом ширина и висина те слике.
def nov_frejm(): prozor.fill(pg.Color("skyblue")) prozor.blit(sl, (x_sl, x_sl))
Шта нам омогућава следећа функција за обраду догађаја?
def obradi_dogadjaj(dogadjaj): global x_sl, y_sl, w_sl, h_sl, pr if dogadjaj.type == pg.MOUSEBUTTONDOWN: x_mis, y_mis = dogadjaj.pos if (x_sl < x_mis and x_mis < x_sl + w_sl and y_sl < y_mis and y_mis < y_sl + h_sl): pr = True elif dogadjaj.type == pg.MOUSEBUTTONUP: pr = False elif dogadjaj.type == pg.MOUSEMOTION: if pr: x_sl = x_mis - w_sl // 2 y_sl = y_mis - h_sl // 2
- Да променимо слику када корисник кликне на њу
- Нетачно
- Да престанемо да приказујемо слику када корисник кликне на њу
- Нетачно
- Да превлачимо мишем слику по прозору
- Тачно
- Да преврнемо слику наопако када корисник кликне на њу.
- Нетачно
Q-334: Изабери тачан одговор: