Prijavi problem


Obeleži sve katergorije koje odgovaraju problemu

Jos 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.

Programiranje grafike pomoću Pygame, priručnik za gimnaziju

Наизменично смењивање облика или боја

Жуто-зелени квадрати

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

Пошто знамо укупан број квадрата и ширину целог екрана дуж око којег су они распоређени, ширину једног квадрата можемо једноставно израчунати дељењем укупне ширине бројем квадрата. Квадрате цртамо у петљи. Ако вредност бројачке променљиве почиње од 0, тада се координата x левог горњег темена i-тог квадрата може добити множењем ширине квадрата бројем i (заиста, ако је ширина квадрата \(a\), тада квадрати редом почињу на координатама \(0, a, 2 a, \ldots, (n-1)\cdot a\). Координата y горњег левог темена сваког квадрата се добија одузимањем половине висине квадрата од средине екрана (коју израчунавамо дељењем висине екрана са два). На тај начин се вертикално средиште квадрата налази на средини екрана. На крају, боју квадрата можемо одредити у зависности од парности редног броја квадрата који се црта. Када је бројач у петљи i паран (када му је вредност 0, 2, 4, 6 или 8, што можемо израчунати поређењем остатка при дељењу i % 2 са нулом) тада квадрат бојимо у жуто, а када је непаран (када му је вредност 1, 3, 5, 7 или 9), тада квадрат бојимо у зелено.

Још један начин да се наизменично мењају боје је да се уведе логичка променљива којом се означава да ли цртамо жути квадрат. У почетку је постављамо на вредност тачно, у сваком кораку петље јој мењамо истинитосну вредност (тако што је негирамо оператором not), а у телу петље боју одређујемо на основу те вредности, гранањем.

Приметимо да смо наредбом гранања (наредби if-else) само поставили боју, а да смо сам квадрат цртали независно, након гранања. Наиме, да смо у наредби гранања цртали квадрат, непотребно бисмо понављали код и тиме начинили програм тежим за одржавање.

Патент затварач

Напиши програм који исцртава шару која подсећа на патент-затварач (рајсфершлус, цибзар).

Таласићи

Напиши програм који на екрану исцртава 10 таласића. Сваки таласић се састоји од полукруга и они се наизменично оријентишу на горе, па на доле.

Решење овог задатка је доста слично претходном. Пречник сваког полукруга (таласића) се израчунава дељењем ширине екрана на број таласића, а полупречник дељењем добијеног количника са два. Усмерење сваког таласића (на горе или на доле) одређујемо помоћу логичке променљиве коју иницијализујемо на вредност тачно и чију вредност мењамо у сваком кораку петље (негирањем, помоћу оператора not). Полукруг цртамо помоћу кружног лука. У случају када је полукруг оријентисан ка горе, тада је почетни угао лука нула степени (уједно и нула радијана), а крајњи угао 180 степени (што износи \(\pi\) радијана), док је код полукруга оријентисаног ка доле почетни угао 180 степени (што износи \(\pi\) радијана), а крајњи нула. Поново приметимо да смо у наредби гранања само одредили вредности које се разликују (почетни и крајњи угао кружног лука), док смо само цртање урадили заједнички.