Classes Peça

La classe Peça representa una peça d’un joc d’escacs. Vegeu-ne l’especificació:

class pessa.Peça(tipus='Peó', color='Blanc')

Atributs:

tipus

Instància de str que representa el tipus de peça. S’espera que sigui 'Rei', 'Dama', 'Torre', 'Cavall', 'Àlfil' o 'Peó'.

color

Instància de str que representa el color de la peça. S’espera que sigui 'Blanc', 'Negre', 'Blanca' o 'Negra'.

Mètodes:

valida()

Retorna un booleà que indica si és una peça vàlida, és a dir, si el seu tipus i color són un dels admesos i concorden amb gènere.

També suporta la funció str() que retorna un string format pel tipus de peça i el seu color.

  1. Descarregueu la implementació d’aquesta classe, que trobareu al mòdul pessa.py. Instancieu una peça d’escacs, comproveu els valors dels seus atributs i modifiqueu-los. Proveu de cridar la funció str(). Invoqueu el mètode valida() per a comprovar si la peça té valors vàlids.

    Per exemple:

    >>> from pessa import Peça
    >>> p1 = Peça('Rei', 'Blanc')
    >>> str(p1)
    'Rei Blanc'
    >>> p1.valida()
    True
    >>> p3 = Peça('Bunyol', 'Groc')
    >>> str(p3)
    'Bunyol Groc'
    >>> p3.valida()
    False
    
  2. Dissenyeu la funció següent que desareu al fitxer validar.py:

    validar.validar(iterp)
    param iterp:

    un iterador sobre una sèqüència d’instàncies de la classe Peça.

    return:

    un iterador de les peces de l’iterador iterp que són vàlides, en el mateix ordre que en la seqüència original.

    
    >>> l = [Peça('Rei','Groc'), Peça('Peó', 'Negre')]
    >>> it = iter(l)
    >>> it2 = peces_valides(it)
    >>> print(next(it2))
    Peó Negre
    >>> next(it2)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration
    
    

Avís

Per a resoldre aquest exercici no es poden fer servir llistes, tuples, diccionaris ni cap altra estructura de dades per a desar els elements d’un iterador.

Disposeu de jocs de proves al fitxer test-peces-valides.txt i d’una solució al fitxer validar.py.