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

Анимације више објеката

Аутомобил и авион

Напиши програм који приказује анимацију авиона који се креће по небу и аутомобила који се креће по земљи, при чему је брзина авиона два пута виша него аутомобила. Када неко возило изађе на десном крају екрана, појављује се поново на левом. Поново можеш употребити слике auto.png и avion.png.

../_images/auto.png ../_images/avion.png

Задатак веома једноставно можемо решити тако што практично два пута поновимо кôд који смо написали у програму у ком смо вршили симулацију аутомобила. Понављање истог или сличног кода више пута је иначе веома лоша пракса и касније ћемо видети начине да се то избегне када се ради са више објеката, али с обзиром на то да се овде кôд понавља само једном, то можемо толерисати.

Две лоптице

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

Поново независно вршимо анимацију два различита објекта. Кључна новина је то што се објекти могу међусобно сударати. Два круга се сударају (пресецају) ако и само ако је растојање њихових центара веће од збира њихових полупречника. Растојање рачунамо на уобичајени начин, Питагорином теоремом. Ако се лоптице сударају, размењујемо им помераје по x и помераје по y оси (векторе брзине).

Више лоптица

Модификуј претходни програм тако да се приказује анимација више лоптица.

Уместо да чувамо посебне променљиве које описују положај и брзину сваке од лоптица, можемо чувати листу координата центара лоптица (назовимо је polozaj, јер одређује положаје свих лоптица) и листу у којој се за сваку лоптицу памти померај по x и померај по y координати (назовимо је brzina јер ти помераји одређују векторе брзине лоптица). Пошто ћемо током рада програма мењати и положаје и брзине лоптица, те листе неће садржати уређене парове, већ двочлане листе координата.

Функција за цртање је једноставна: за сваки положај лоптице из листе polozaj црта се лоптица којој је центар на том положају (довољно је да цртање убацимо у једну петљу for).

Функција којом се одређује наредни фрејм је компликованија. Потребно је да свим лоптицама променимо x и y координате, у складу са тренутним векторима брзина. Након тога, проверавамо да ли је лоптица изашла ван граница прозора (на свакој од 4 ивице) и ако јесте, негирамо одговарајућу компоненту вектора брзине. На крају, за сваки пар лоптица проверавамо да ли се сударају и ако је то случај, тим лоптицама размењујемо векторе брзина.

Пахуљице

Напиши програм који приказује анимацију пахуља које падају са врха на дно екрана. Можеш употребити слику pahulja.png. Када пахуље падну на дно екрана, нове крећу да падају са врха.

../_images/pahulja.png

Центре пахуљица можемо памтити у листи парова. Један начин да реализујемо померање пахуљица је тај да од текуће листе направимо нову у којој ће x координате свих елемената бити неизмењене, а у којој ће y координате бити увећане за 1. При том, из листе можемо избацити пахуље које су пале испод дна екрана (којима је y координата врха већа од висине прозора) и за сваку пахуљу која испадне у листу додамо нову пахуљу (њој координате одређујемо насумично, тако да се по ширини налази унутар прозора, а да по висини креће да пада из појаса изнад екрана који је широк једну петину екрана).