2. Implementació de la classe Dibuix (3 punts)¶
Mitjançant un conjunt de rectangles de colors diversos podem realitzar un dibuix. Un exemple:
Implementeu la classe, Dibuix tal com s’especifica a continuació i deseu-la al mòdul dibuixos (fitxer dibuixos.py):
- class dibuixos.Dibuix(autor)¶
Crea un dibuix de l’autor indicat, inicialment sense cap rectangle.
Atributs públics:
- rects¶
Llista de rectangles que conté el dibuix, en l’ordre en què es pinten
Mètodes:
- afegir(r, final=True)¶
Afegeix el rectangle r, per defecte al final del dibuix. Si el paràmetre opcional final és
False, l’insereix al començment de tot.
- color(x, y)¶
Retorna el color del qual quedarà pintat el punt (x, y) del dibuix. El color d’un punt sempre és el de l’últim rectangle del dibuix que el conté. Si el punt no és interior a cap dels rectangles del dibux, retorna
'blanc'.
- límits()¶
Retorna el rectangle mínim, de color blanc, que conté tots els rectangles del dibuix. Si no hi ha cap rectangle al dibuix, el rectangle retornat serà de color negre i de vèrtexs (0,0) i (0,0).
Operacions:
Operació
Resultat
len(d)Nombre de rectangles del dibuix d
d[i]Rectangle i-èssim del dibuix d. Es compleix que 0 <= i < len(d).
Suggeriment
Fixeu-vos bé en l’especificació de la classe Rectangle, ja que disposa de mètodes i operacions que us ajudaran a implementar els mètodes de Dibuix.
Exemples d’ús:
>>> from rectangles import Rectangle
>>> from dibuixos import Dibuix
>>> d = Dibuix('Piet Mondrian')
>>> d.autor
'Piet Mondrian'
>>> d.rects
[]
>>> len(d)
0
>>> d.límits().color
'negre'
>>> d.afegir(Rectangle(25, 75, 33, 90, 'vermell')) # Porta de la fàbrica
>>> d.afegir(Rectangle(40, 75, 47, 80, 'blavós')) # Finestra de la fàbrica
>>> d.afegir(Rectangle(25, 45, 30, 70, 'taronja')) # Xemeneia 1 de la fàbrica
>>> d.afegir(Rectangle(33, 45, 38, 70, 'taronja')) # Xemeneia 2 de la fàbrica
>>> d.afegir(Rectangle(20, 70, 80, 90, 'salmó'), False) # Paret de la fàbrica
>>> len(d)
5
>>> print(d[2])
Rectangle de color blavós entre els punts (40, 75) i (47, 80)
>>> for x in d.rects:
... print(x)
Rectangle de color salmó entre els punts (20, 70) i (80, 90)
Rectangle de color vermell entre els punts (25, 75) i (33, 90)
Rectangle de color blavós entre els punts (40, 75) i (47, 80)
Rectangle de color taronja entre els punts (25, 45) i (30, 70)
Rectangle de color taronja entre els punts (33, 45) i (38, 70)
>>> print(d.límits())
Rectangle de color blanc entre els punts (20, 45) i (80, 90)
>>> d.color(30, 85)
'vermell'
>>> d.color(50, 50)
'blanc'
Disposeu de jocs de prova al fitxer tests-dibuix.txt