PyGame - анимације¶
Питање 1.¶
Шта је резултат извршавања следеће наредбе?
pygame.time.wait(1)
- Зауставља се извршавање програма на период од 1 милисекунде.
- Тачно
- Зауставља се извршавање програма док корисник не кликне на тастер 1.
- Нетачно
- Зауставља се извршавање програма на период од 1 секунде.
- Нетачно
Q-448: Изабери тачан одговор:
Питање 2.**¶
Означи тачна тврђења.
- Током паузе у извршавању програма позивом функције pygame.time.wait() није могућа регистрација догађаја.
- Нетачно
- Током паузе у извршавању програма позивом функције pygame.time.wait() није могућа реакција на догађаје.
- Тачно
- Позивом функције pygame.time.wait() се ствара нови догађај.
- Нетачно
- Функција pygame.time.wait() се не може извршити уколико постоје необрађени догађаји који су се десили пре позива функције.
- Нетачно
- Функција pygame.time.wait() нема утицаја на стварање и обраду догађаја, већ само паузира све реакције на догађаје, тј. њихову обраду.
- Тачно
Q-449: Изабери тачан одговор:
Питање 3.**¶
Означи тачна тврђења.
- Извршавањем pygame.time.set_timer(pygame.USEREVENT, 100) се зауставља рад програма на 100 милисекунди.
- Нетачно
- Позивом pygame.time.set_timer(pygame.USEREVENT, 100) се обезбеђује да по истеку наведеног периода од тренутка када је функција позвана буде створен догађај pygame.USEREVENT.
- Нетачно
- Позивом pygame.time.set_timer(pygame.USEREVENT, 100) се на сваких 100 милисекунди ствара догађај pygame.USEREVENT.
- Тачно
- Извршавањем pygame.time.set_timer() се не зауставља рад програма.
- Тачно
- Када се користи тајмер реакција на догађај који је створио тајмер је исцртавање нове слике.
- Тачно
Q-450: Изабери тачан одговор:
Питање 4.*¶
Дат је следећи непотпун код.
import pygame as pg, random pg.init() prozor = pg.display.set_mode((200,200)) def nasumicna_boja(): return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) pg.time.set_timer(pg.USEREVENT,1000) kraj = False treba_crtati = True while not kraj: if treba_crtati: prozor.fill(nasumicna_boja()) ___________ dogadjaj = pg.event.wait() if dogadjaj.type == pg.QUIT: kraj = True elif dogadjaj.type == pg.USEREVENT: treba_crtati = True pg.quit()
Уколико је циљ да програм исцртава прозор којем сваке секунде промени боју позадине наведи које од наредних команди и у ком редоследу треба додати на означено место да би програм радио како је очекивано.
pg.display.update() treba_crtati = True treba_crtati = False
- 1) па 2)
- Нетачно
- 1) па 3)
- Нетачно
- 2)
- Нетачно
- 1) и 2) у било ком редоследу
- Тачно
- 1) и 3) у било ком редоследу
- Нетачно
Q-451: Изабери тачан одговор:
Питање 5.**¶
Дата су следећа два кода.
import pygame as pg, random pg.init() prozor = pg.display.set_mode((200,200)) def nasumicna_boja(): return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) pg.time.set_timer(pg.USEREVENT,1000) kraj = False treba_crtati = True while not kraj: if treba_crtati: prozor.fill(nasumicna_boja()) pg.display.update() treba_crtati = False dogadjaj = pg.event.wait() if dogadjaj.type == pg.QUIT: kraj = True elif dogadjaj.type == pg.USEREVENT: treba_crtati = True pg.quit()
import pygame as pg, random pg.init() prozor = pg.display.set_mode((200,200)) def nasumicna_boja(): return (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) pg.time.set_timer(pg.USEREVENT,1000) kraj = False treba_crtati = True while not kraj: if treba_crtati: pg.display.update() treba_crtati = False dogadjaj = pg.event.wait() if dogadjaj.type == pg.USEREVENT: treba_crtati = True elif dogadjaj.type == pg.QUIT: kraj = True pg.quit()
Дати кодови се разликују у редоследу испитивања услова да ли је неки догађај наступио. Да ли се за један исти редослед одигравања догађаја тајмера и гашења прозора може десити да се ова два програма различито понашају?
- Да. Догађаји се обрађују редоследом којим се испитују. Програм 1) увек прво одбрађује догађај искључивања прозора, што значи да у појединим сценаријима може игнорисати догађај pg.USEREVENT који се десио пре pg.QUIT.
- Нетачно
- Не. Догађаји се обрађују редоследом којим су се десили. Редослед испитивања који је догађај наступио не утиче на редослед обраде догађаја.
- Тачно
- Програм 2) неће радити због погрешног редоследа испитивања услова. Догађај pg.QUIT мора бити први испитан.
- Нетачно
Q-452: Изабери тачан одговор:
Питање 6.*¶
Нека је дат следећи непотпун код.
import pygame as pg, random pg.init() prozor = pg.display.set_mode((250,250)) pg.time.set_timer(pg.USEREVENT,1000) kraj = False treba_crtati = True boja = 0 while not kraj: if treba_crtati: if boja = 0: pg.draw.circle(prozor, pg.Color("red"), (150, 150), 50) _________ # 1 else: pg.draw.circle(prozor, pg.Color("yellow"), (150, 150), 50) _________ # 2 pg.display.update() treba_crtati = False dogadjaj = pg.event.wait() if dogadjaj.type == pg.QUIT: kraj = True elif dogadjaj.type == pg.USEREVENT: treba_crtati = True _________ # 3 pg.quit()
Коју од наведених команди којој означеној линији треба додати да би програм при извршавању сваке секунде исцртаво круг који наизменичном мења боју из црвене у жуту и обрнуто?
boja = 1
boja = 0
- 1. линији # 1, 2. линији # 2
- Тачно
- 1. линији # 1, 2. линији # 3
- Нетачно
- 2. линији # 1, 1. линији # 3
- Нетачно
- 1. линији # 1, 2. линији # 2, 1. линији # 3
- Нетачно
Q-453: Изабери тачан одговор:
Питање 7.*¶
Који од наредних кодова обезбеђују да се, уколико корисник не затвори прозор раније, исцртавања блока 1 изведу тачно 10 пута?
pg.time.set_timer(pg.USEREVENT,1000) kraj = False treba_crtati = True b = 0 while not kraj: if treba_crtati: # blok 1 b = b + 1 dogadjaj = pg.event.wait() if (dogadjaj.type == pg.QUIT) or (b == 10): kraj = True elif dogadjaj.type == pg.USEREVENT: treba_crtati = True pg.quit()
pg.time.set_timer(pg.USEREVENT,1000) kraj = False treba_crtati = True b = 0 while not kraj: if treba_crtati: # blok 1 b = b + 1 dogadjaj = pg.event.wait() if dogadjaj.type == pg.QUIT: kraj = True elif dogadjaj.type == pg.USEREVENT: treba_crtati = True elif b == 10: kraj = True pg.quit()
pg.time.set_timer(pg.USEREVENT,1000) kraj = False treba_crtati = True b = 0 while not kraj: if treba_crtati: # blok 1 b = b + 1 dogadjaj = pg.event.wait() if dogadjaj.type == pg.QUIT: kraj = True elif dogadjaj.type == pg.USEREVENT: treba_crtati = True if b == 10: kraj = True pg.quit()
pg.time.set_timer(pg.USEREVENT,1000) kraj = False treba_crtati = True b = 0 while not kraj: if treba_crtati: # blok 1 b = b + 1 dogadjaj = pg.event.wait() if (dogadjaj.type == pg.QUIT) or (b == 10): kraj = True elif dogadjaj.type == pg.USEREVENT: treba_crtati = True pg.quit()
- 1)
- Нетачно
- 2)
- Нетачно
- 3)
- Тачно
- 4)
- Тачно
Q-454: Изабери тачан одговор:
Питање 8.*¶
Шта је резултат извршавања следећег дела кода?
pg.time.set_timer(pg.USEREVENT, 100) kraj = False treba_crtati = True a = 50 x = 0 while not kraj: if treba_crtati: prozor.fill(pg.Color("white")) pg.draw.rect(prozor, pg.Color("red"), (x, 50, a, a)) pg.display.update() treba_crtati = False dogadjaj = pg.event.wait() if dogadjaj.type == pg.QUIT: kraj = True elif dogadjaj.type == pg.USEREVENT: x = x + 10 treba_crtati = True
- У прозору се креће квадрат тако што се на сваких 100 милисекунди помера за 10 пиксела по хоризонталној путањи с лева на десно док не нестане.
- Тачно
- У прозору се креће квадрат тако што се на сваких 100 милисекунди помера за 10 пиксела по усправној путањи одозго на доле док не нестане.
- Нетачно
- У прозору се на сваких 100 милисекунди исцртава правоугаоник висине 50, при чему се ширина при сваком исцртавању повећава за 10.
- Нетачно
- Ниједан од понуђених одговора није тачан.
- Нетачно
Q-455: Изабери тачан одговор:
Питање 9.¶
Шта је резултат извршавања следећег дела кода?
(sirina, visina) = (200, 200) prozor = pg.display.set_mode((sirina, visina)) pg.time.set_timer(pg.USEREVENT, 100) kraj = False treba_crtati = True a = 20 while not kraj: if treba_crtati: prozor.fill(pg.Color("white")) pg.draw.circle(prozor, pg.Color("red"), (100, 100), a) pg.display.update() treba_crtati = False dogadjaj = pg.event.wait() if dogadjaj.type == pg.QUIT: kraj = True elif dogadjaj.type == pg.USEREVENT: a = a + 10 treba_crtati = True
- У прозору се креће круг тако што се на сваких 100 милисекунди помера за 10 пиксела по хоризонталној путањи с лева на десно док не нестане.
- Нетачно
- У прозору се креће круг тако што се на сваких 100 милисекунди помера за 10 пиксела по усправној путањи одозго на доле док не нестане.
- Нетачно
- У прозору се на сваких 100 милисекунди исцртава круг који у првом исцртавању има полупречник 20, а при сваком следећем за 10 пиксела већи.
- Тачно
- Ниједан од понуђених одговора није тачан.
- Нетачно
Q-456: Изабери тачан одговор:
Питање 10.*¶
Коју наредбу треба додати на означено место коду да би извршавањем следећег кода био приказан квадрат који се креће по хоризонталној путањи с лева на десно, а у тренутку када више не може бити видљив цео поново појављује на почетној позицији и наставља даље да се креће на исти начин?
(sirina, visina) = (200, 200) prozor = pg.display.set_mode((sirina, visina)) pg.time.set_timer(pg.USEREVENT, 100) kraj = False treba_crtati = True pocetna = 100 x = pocetna while not kraj: if treba_crtati: prozor.fill(pg.Color("white")) pg.draw.rect(prozor, pg.Color("red"), (x, 100, 50, 50)) pg.display.update() treba_crtati = False dogadjaj = pg.event.wait() if dogadjaj.type == pg.QUIT: kraj = True elif dogadjaj.type == pg.USEREVENT: _____________________ treba_crtati = True
- x = x + 10 if x + 10 > sirina else pocetna
- Нетачно
- x = x + 10 if x + 50 > sirina else pocetna
- Нетачно
- x = x + 10 if x + 60 > sirina else pocetna
- Нетачно
Q-457: Изабери тачан одговор:
Питање 11.**¶
Коју наредбу треба додати на означено место коду да би извршавањем следећег кода био приказан круг који се креће по хоризонталној путањи с лева на десно, а у тренутку када више ниједан део круга не може бити видљив круг се поново појављује на почетној позицији и наставља даље да се креће?
(sirina, visina) = (200, 200) prozor = pg.display.set_mode((sirina, visina)) pg.time.set_timer(pg.USEREVENT, 100) kraj = False treba_crtati = True pocetna = 100 a = pocetna while not kraj: if treba_crtati: prozor.fill(pg.Color("white")) pg.draw.circle(prozor, pg.Color("red"), (a, 100), 50) pg.display.update() treba_crtati = False dogadjaj = pg.event.wait() if dogadjaj.type == pg.QUIT: kraj = True elif dogadjaj.type == pg.USEREVENT: _____________________ treba_crtati = True
- a = a + 10 if а + 10 > sirina else pocetna
- Нетачно
- a = a + 10 if а - 50 > sirina else pocetna
- Нетачно
- a = a + 10 if а > sirina else pocetna
- Нетачно
- a = a + 10 if а - 40 > sirina else pocetna
- Тачно
Q-458: Изабери тачан одговор: