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:

../../../_images/cotxe.png

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 horitzontal velh. 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.