Escaquer iterable¶
Ampliar la classe
Escaquer
de l’exercici Classe Escaquer per a que sigui iterable. L’iterador resultant recorrerà l’escaquer per files, i per cada fila, les seves columnes (De l’a fins l’h). Les files es recorreran de la numeració més gran a la numeració més petita (8 a 1).Per exemple,
>>> import escaquer >>> import peces >>> e=escaquer.Escaquer() >>> e['c8'] = peces.Peça('Rei','Blanc') >>> it = iter(e) >>> next(it) 'Buida' >>> next(it) 'Buida' >>> next(it) Rei Blanc >>> next(it) 'Buida'
Una manera de fer-ho és afegir a la classe
Escaquer
(Baixeu-vos el fitxerescaquer.py
, i el fitxerpessa.py
) el mètode __iter__. Dins de __iter__, construïu un generador que faci el demanat.Afegir un nou mètode, __str__, a la classe
peces.Peça
que retorna un símbol que indica el valor de la peça.Per exemple,
>>> print(peces.Peça('Torre','Blanca'),peces.Peça('Cavall','Negre')) ♖ ♞ >>> print(peces.Peça('Àlfil','Blanc'), peces.Peça('Dama', 'Negra')) ♗ ♛ >>> print(peces.Peça('Rei','Blanc')) ♔
Per implementar el mètode __str__, afegiu a la classe
peces.Peça
l’atribut de classe següent:- peces.Peça.símbol¶
símbol={('Rei','Blanc'): '\u2654', ('Dama','Blanca'): '\u2655', ('Torre','Blanca'): '\u2656', ('Àlfil','Blanc'): '\u2657', ('Cavall','Blanc'): '\u2658', ('Peó','Blanc'): '\u2659', ('Rei','Negre'): '\u265A', ('Dama','Negra'): '\u265B', ('Torre','Negra'): '\u265C', ('Àlfil','Negre'): '\u265D', ('Cavall','Negre'): '\u265E', ('Peó','Negre'): '\u265F'}
Aleshores, el mètode __str__ només ha de consultar el diccionari
peces.Peça.símbol
per retornar l”string amb el símbol que cal.Afegir un nou mètode, __str__, a la classe
Escaquer
.Un exemple del resultat del mètode pel cas d’un
Escaquer
e inicialitzat amb la configuració inicial del joc d’escacs:>>> print(e) |♜|♞|♝|♛|♚|♝|♞|♜| |♟|♟|♟|♟|♟|♟|♟|♟| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |♙|♙|♙|♙|♙|♙|♙|♙| |♖|♘|♗|♕|♔|♗|♘|♖|
Fer-ho a partir de l’iterador prèviament dissenyat, i només amb les funcions predefinides de python,
itertools
,functools
ioperator
(sense for ni while).
Nota
Disposeu de jocs de de proves al fitxer test_escaquer2.txt
.
Solució
Disposeu d’una solució als fitxers escaquer.py
i peces.py
.