Sprites de cotxes per a frogger =============================== .. py:module:: cotxes 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 :py:class:`pygame.sprite.Sprite`: .. py:class:: 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 :math:`x` de la dreta de l'sprite sigui 0. Atributs: .. py:attribute:: image Imatge del cotxe. Per exemple: .. image:: cotxe.png :align: center Ha de ser un objecte de classe :py:class:`pygame.Surface`. .. py:attribute:: rect Posició del cotxe a la pantalla. Ha de ser un objecte de classe :py:class:`pygame.Rect`. .. py:attribute:: velh Velocitat horitzontal d'esquerra a dreta del cotxe en píxels per fotograma. Mètodes: .. py:method:: update() Actualitza la posició horitzontal de l'sprite (:py:attr:`~Cotxe.rect`) incrementant-la segons la velocitat horitzontal :py:attr:`~Cotxe.velh`. 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 :py:class:`~cotxes.Cotxe` tingueu en compte que el mètode *__init__* ha d'inicialitzar els atributs :py:attr:`~Cotxe.image` i :py:attr:`~Cotxe.velh` amb els valors dels paràmetres *im_cotxe* i *vel_horitzontal*. L'atribut :py:attr:`~Cotxe.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 :py:attr:`~Cotxe.image`. Per a consultar l'amplada de la pantalla podeu cridar a `pygame.display.get_surface().get_width()`. Disposeu d'un programa de prova (:download:`main_cotxes.py`) per a aquesta classe, que, disposant dels fitxers :download:`cotxe.png ` i :download:`conf.py` i havent desat la classe en el mòdul :file:`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. .. rubric:: Solució Disposeu d'una solució al fitxer :download:`cotxes.py `.