PyGame - догађаји¶
Питање 1.¶
Претпоставимо да смо дефинисали функцију obradi_dogadjaj и навели је у позиву функције pygamebg.frame_loop
def obradi_dogadjaj(dogadjaj): ... pygamebg.frame_loop(30, nov_frejm, 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)
Означи тачна тврђења.
Q-320: Изабери тачан одговор:
Питање 3.¶
Ако држимо притиснут неки тастер тастатуре (и нисмо претходно мењали подразумевани начин генерисања догађаја тастатуре)
Q-321: Изабери тачан одговор:
Питање 4.¶
Који догађаји настају када „откуцамо” неко слово на тастатури?
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):
Q-325: Изабери тачан одговор:
Питање 8.*¶
Означи које од наредби је потребно у PyGame програму навести да би током његовог извршавања догађај био исправно регистрован.
Q-326: Изабери тачан одговор:
Питање 9.¶
Догађај затварања прозора је у PyGame библиотеци означен са:
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()
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: Изабери тачан одговор: