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

Очитавање положаја миша

Корисник интеракцију са програмом обично врши мишем или тастатуром. Напреднији облици интеракције подразумевају реаговање на догађаје и њих ћемо описати у наредном поглављу посвећеном догађајима. Ипак наше анимације можемо учинити интересантнијим помоћу веома једноставне функционалности очитавања текућег положаја миша (за шта нам нису потребни догађаји). Функција pg.mouse.get_pos() враћа уређени пар координата тачке на којој се тренутно налази показивач миша.

Анимирани лептир кога померамо мишем

Напиши програм који приказује анимираног лептира који лети по екрану и чији се центар налази увек тачно изнад показивача миша. За анимацију можеш употребити слике leptir1.png и leptir2.png.

../_images/leptir1.png ../_images/leptir2.png

Лоптица која прати миша

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

У програму ћемо памтити текућу позицију лоптице. Кључно питање је како одредити позицију лоптице у наредном фрејму. Нека тачка \(A\) представља текућу позицију центра лоптице, нека тачка \(B\) представља текућу позицију показивача миша и нека тачка \(X\) представља нову позицију центра лоптице. Пошто се центар помера из тачке \(A\) у тачку \(X\) лоптица у једном фрејму пређе пут једнак растојању између те две тачке. Обележимо ту вредност са \(v\) (ако хоћемо да се лоптица креће глатко, број фрејмова у секунди треба да буде већи, а то треба да буде нека мала вредност). Поставља се питање колико по хоризонтали и колико по вертикали треба да се помери лоптица. Троуглови \(AX_xX\) и \(ACB\) су слични. Зато се дужине \(AX_x\) и \(X_xX\) које представљају хоризонтално и вертикално померање могу израчунати на основу дужине \(AX\) која је једнака \(v\), дужине \(AB\) која се може израчунати Питагорином теоремом као растојање између тачке \(А\) и \(B\) чије су нам координате познате, дужине \(AC\) која је једнака разлици између x координата тачака \(A\) и \(B\) и дужне \(BC\) која је разлика између њихових y координата. Важи да је \(AX_x:AX = AC:AB\), као и да је \(XX_x:AX = BC:AB\) одакле се израчунавају координате непознате тачке \(X\).

../_images/pratim_misa_koordinate.png

Лоптица која прати миша и оставља траг

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

Увешћемо листу trag у којој ћемо памтити 20 претходних положаја лоптице. Приликом цртања на сваком упамћеном положају ћемо цртати круг, при чему ће сваки наредни круг бити тамнији (нијансу ћемо одредити пропорцијом, тако да се на првом положају црта бела, а на последњем положају црта црна лоптица). У сваком новом фрејму ћемо убацивати тренутни положај лоптице на крај листе, а када она садржи више од 20 елемената, избациваћемо први (најстарији) елемент листе (то можемо урадити помоћу pop(0)).