Sprites de cotxes per a frogger¶
Estem dissenyant un joc semblant al frogger en què una granota ha de travessar una carretera per arribar a l’altra banda sense ser atropellada pels cotxes. L’objectiu d’aquest problema és fer una classe de pygame que serveixi per a representar els cotxes que es desplacen horitzontalment d’esquerra a dreta.
A tal fi, es demana que dissenyeu la classe següent
que es deriva de la classe pygame.sprite.Sprite:
- class cotxes.Cotxe(im_cotxe, pos_vert, vel_horitzontal)¶
Sprite d’un cotxe amb imatge im_cotxe que es desplaça horitzontalment a l’alçada pos_vert de la pantalla i a una velocitat horitzontal d’esquerra a dreta de vel_horitzontal píxels per fotograma.
La posició horitzontal inicial ha de ser tal que el cotxe estigui a l’esquerra de la pantalla, completament a fora, però a tocar, és a dir, que la coordenada \(x\) de la dreta de l’sprite sigui 0.
Atributs:
- image¶
Imatge del cotxe. Per exemple:
Ha de ser un objecte de classe
pygame.Surface.
- rect¶
Posició del cotxe a la pantalla. Ha de ser un objecte de classe
pygame.Rect.
- velh¶
Velocitat horitzontal d’esquerra a dreta del cotxe en píxels per fotograma.
Mètodes:
- update()¶
Actualitza la posició horitzontal de l’sprite (
rect) incrementant-la segons la velocitat horitzontalvelh. Ara bé, si el cotxe surt totalment fora de la finestra per la dreta, és a dir, si la seva coordenada horitzontal és més gran que l’amplada de la pantalla, cal tornar a situar-lo a l’esquerra de la pantalla, completament a fora, però a tocar.
Per implementar la classe Cotxe tingueu en compte
que el mètode __init__ ha d’inicialitzar els atributs
image i velh amb els valors dels
paràmetres im_cotxe i vel_horitzontal. L’atribut
rect s’ha d’inicialitzar de manera que la coordenada
vertical ha de ser pos_vert i la horitzontal ha de ser tal que el
marge dret de la imatge estigui a la coordenada 0. L’amplada i
l’alçada del rectangle han de coincidir amb les de la imatge
image.
Per a consultar l’amplada de la pantalla podeu cridar a pygame.display.get_surface().get_width().
Disposeu d’un programa de prova (main_cotxes.py) per a
aquesta classe, que, disposant dels fitxers cotxe.png i conf.py i havent desat la classe en el
mòdul cotxes.py, hauria de mostrar una finestra amb quatre
cotxes que es mouen a velocitats diferents d’esquerra a dreta,
desapareixent per la dreta de la finestra i reaparaixent-hi per
l’esquerra.
Solució
Disposeu d’una solució al fitxer cotxes.py.