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(amplada)¶
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, la posició horitzontal de l’esquerra de l’sprite és més gran que amplada, 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
.
Disposeu d’un joc de proves al fitxer test_cotxes.txt
i
també d’un programa de prova (main_cotxes.py
) per a
aquesta classe, que, disposant del fitxer cotxe.png
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
.