$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

PyGame - анимације

Питање 1.

Шта је резултат извршавања следеће наредбе?

pygame.time.wait(1)

    Q-448: Изабери тачан одговор:

  • Зауставља се извршавање програма на период од 1 милисекунде.
  • Тачно
  • Зауставља се извршавање програма док корисник не кликне на тастер 1.
  • Нетачно
  • Зауставља се извршавање програма на период од 1 секунде.
  • Нетачно

Питање 2.**

Означи тачна тврђења.

    Q-449: Изабери тачан одговор:

  • Током паузе у извршавању програма позивом функције pygame.time.wait() није могућа регистрација догађаја.
  • Нетачно
  • Током паузе у извршавању програма позивом функције pygame.time.wait() није могућа реакција на догађаје.
  • Тачно
  • Позивом функције pygame.time.wait() се ствара нови догађај.
  • Нетачно
  • Функција pygame.time.wait() се не може извршити уколико постоје необрађени догађаји који су се десили пре позива функције.
  • Нетачно
  • Функција pygame.time.wait() нема утицаја на стварање и обраду догађаја, већ само паузира све реакције на догађаје, тј. њихову обраду.
  • Тачно

Питање 3.**

Означи тачна тврђења.

    Q-450: Изабери тачан одговор:

  • Извршавањем 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() се не зауставља рад програма.
  • Тачно
  • Када се користи тајмер реакција на догађај који је створио тајмер је исцртавање нове слике.
  • Тачно

Питање 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()

Уколико је циљ да програм исцртава прозор којем сваке секунде промени боју позадине наведи које од наредних команди и у ком редоследу треба додати на означено место да би програм радио како је очекивано.

  1. pg.display.update()
    
  2. treba_crtati = True
    
  3. treba_crtati = False
    

    Q-451: Изабери тачан одговор:

  • 1) па 2)
  • Нетачно
  • 1) па 3)
  • Нетачно
  • 2)
  • Нетачно
  • 1) и 2) у било ком редоследу
  • Тачно
  • 1) и 3) у било ком редоследу
  • Нетачно

Питање 5.**

Дата су следећа два кода.

  1. 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()
    
  2. 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()
    

Дати кодови се разликују у редоследу испитивања услова да ли је неки догађај наступио. Да ли се за један исти редослед одигравања догађаја тајмера и гашења прозора може десити да се ова два програма различито понашају?

    Q-452: Изабери тачан одговор:

  • Да. Догађаји се обрађују редоследом којим се испитују. Програм 1) увек прво одбрађује догађај искључивања прозора, што значи да у појединим сценаријима може игнорисати догађај pg.USEREVENT који се десио пре pg.QUIT.
  • Нетачно
  • Не. Догађаји се обрађују редоследом којим су се десили. Редослед испитивања који је догађај наступио не утиче на редослед обраде догађаја.
  • Тачно
  • Програм 2) неће радити због погрешног редоследа испитивања услова. Догађај pg.QUIT мора бити први испитан.
  • Нетачно

Питање 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()

Коју од наведених команди којој означеној линији треба додати да би програм при извршавању сваке секунде исцртаво круг који наизменичном мења боју из црвене у жуту и обрнуто?

  1. boja = 1
    
  2. boja = 0
    

    Q-453: Изабери тачан одговор:

  • 1. линији # 1, 2. линији # 2
  • Тачно
  • 1. линији # 1, 2. линији # 3
  • Нетачно
  • 2. линији # 1, 1. линији # 3
  • Нетачно
  • 1. линији # 1, 2. линији # 2, 1. линији # 3
  • Нетачно

Питање 7.*

Који од наредних кодова обезбеђују да се, уколико корисник не затвори прозор раније, исцртавања блока 1 изведу тачно 10 пута?

  1. 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()
    
  2. 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()
    
  3. 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()
    
  4. 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()
    

    Q-454: Изабери тачан одговор:

  • 1)
  • Нетачно
  • 2)
  • Нетачно
  • 3)
  • Тачно
  • 4)
  • Тачно

Питање 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

    Q-455: Изабери тачан одговор:

  • У прозору се креће квадрат тако што се на сваких 100 милисекунди помера за 10 пиксела по хоризонталној путањи с лева на десно док не нестане.
  • Тачно
  • У прозору се креће квадрат тако што се на сваких 100 милисекунди помера за 10 пиксела по усправној путањи одозго на доле док не нестане.
  • Нетачно
  • У прозору се на сваких 100 милисекунди исцртава правоугаоник висине 50, при чему се ширина при сваком исцртавању повећава за 10.
  • Нетачно
  • Ниједан од понуђених одговора није тачан.
  • Нетачно

Питање 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

    Q-456: Изабери тачан одговор:

  • У прозору се креће круг тако што се на сваких 100 милисекунди помера за 10 пиксела по хоризонталној путањи с лева на десно док не нестане.
  • Нетачно
  • У прозору се креће круг тако што се на сваких 100 милисекунди помера за 10 пиксела по усправној путањи одозго на доле док не нестане.
  • Нетачно
  • У прозору се на сваких 100 милисекунди исцртава круг који у првом исцртавању има полупречник 20, а при сваком следећем за 10 пиксела већи.
  • Тачно
  • Ниједан од понуђених одговора није тачан.
  • Нетачно

Питање 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

    Q-457: Изабери тачан одговор:

  • 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
  • Нетачно

Питање 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

    Q-458: Изабери тачан одговор:

  • 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
  • Тачно