Rellotge analògic¶
Volem representar un rellotge analògic, que pugui guardar qualsevol hora del dia i dibuixar-se gràficament en una imatge, amb les agulles en la posició que correspongui.
Dissenyeu la funció
prepara_agulla
que donada una imatge corresponent a una agulla del rellotge en posició vertical i apuntat cap amunt (a les 12), la posició del punt base de l’agulla en aquesta imatge (una tupla de dos enters), i les mides de la imatge resultant (una altra tupla amb l’amplada i l’alçada), crea i retorna una nova imatge de tipus'RGBA'
. La imatge retornada ha de consistir en una imatge de les mides indicades, amb tots els píxels blancs i totalment transparents, en la qual s’ha enganxat la imatge de l’agulla de manera que el punt base coincideixi amb el centre de la nova imatge.Exemple de
prepara_agulla
.¶Definiu la classe
Rellotge
, que permeti representar un rellotge analògic, que ha de disposar dels següents atributs:hora
: enter corresponent a l’hora de l’instant actual.minuts
: enter corresponent als minuts de l’instant actual.im_esfera
: imatge corresponent al fons del rellotge.im_horaria
: imatge corresponent a l’agulla horària.im_minutera
: imatge corresponent a l’agulla minutera.
L’hora i minuts estan en el format de 24 hores, és a dir, les 0:00 són les dotze de la nit, les 10:30 són dos quarts d’onze del matí, les 18:05 són les sis i cinc de la tarda, etc. Les tres imatges tenen la mateixa mida i les de les agulles apunten a les 12 i ja tenen el fons transparent (com les retornades per
prepara_agulla
), per tal que les agulles puguin pivotar respecte al punt central de la seva imatge sense sortir dels límits de l’esfera.Esquema d’un objecte de la classe
rellotge
.¶Definiu el mètode
__init__
, que ha de crear un rellotge a l’hora i minuts indicats i assignar les imatges de l’esfera i les agulles als atributs adients.En segon lloc, afegiu a la classe el mètode
hora12
, que retorna una tupla de tres components que indiquen l’instant en el format de 12 hores:(hora, minuts, s)
, essenthora
iminuts
dos enters is
un string que valdrà'AM'
o'PM'
depenent de si l’hora és anterior o posterior a les 12 del migdia.Completeu el mètode
imatge
de la classeRellotge
, que retorni una imatge del rellotge a l’instant que indica, amb les agulles a la posició correcta. Vigileu de no modificar l’atributesfera
, sinó que cal crear una imatge nova. En la imatge, l’agulla horària ha de quedar superposada a la de l’agulla minutera. Tingueu en compte que la posició de l’agulla horària depèn no només de l’hora, sinó també dels minuts; per exemple a les 10:32 l’agulla horària es troba entre les 10 i les 11.La figura de la dreta mostra una imatge d’un rellotge com les que ha de generar aquest mètode.¶