Садржај
1. Робот Карел - линијски програми и бројачка петља
2. Робот Карел - условна петља и гранање
3. Робот Карел - задаци за вежбање
4. Корњача графика - линијски програми и петље
5. Корњача графика - гранање, угнежђене петље, функције, торке и листе
6. Корњача графика - задаци за вежбање
9. Израчунавања - коришћење и дефинисање функција
10. Израчунавања - задаци за вежбање
13. Контрола тока - вежбање
17. Програмирање 2Д графике - Увод у Pygame

27.2. Анимације кретања домаћи

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

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

Стање сцене је одређено положајем аутомобила и авиона. Положај објеката биће одређен познавањем координата горњег левог угла ових слика (њих можемо чувати коришћењем променљивих auto_x, auto_y и avion_x, avion_Y). Поред тога, чуваћемо и саме слике аутомобила и авиона, као и променљиве којима су представљене њихове димензије.

Цртање вршимо веома једноставно, приказивањем ових слика на позицији одређеној тренутним координатама (auto_x, auto_y) и (avion_x, avion_y).

Померање објекта вршићемо само по оси x. При преласку на сваки нови фрејм (у функцији novi_frejm) петље координатe auto_x и avion_x ћемо увећавати за одговарајући померај. За разлику од задатака у којима смо брзину кретања задавали бројем пиксела по фрејму, овај пут желимо да брзину задамо у броју пиксела у једној секунди. Да бисмо од брзине задате у пикселима по секунди добили број пиксела које аутомобил и авион треба да пређу по сваком фрејму, потребно је да израчунамо време dt које протекне између приказивања два узастопна фрејма. Њега лако израчунавамо на основу броја фрејмова у секунди (у питању је реципрочна вредност). Померај (пређени пут) онда израчунавамо као производ времена dt и брзине објеката изражене у броју пиксела у једној секунди.

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

(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+