3. Classe Match3Plus (2 punts)¶
Volem modificar el joc afegint un forat en una posició del tauler, la qual mai no podrà contenir cap joia. Això ho aconseguirem utilitzant el mecanisme d’herència. Hem dissenyat una nova classe Match3Plus que tindrà un atribut addicional, la posició del forat.
Implementeu la classe Match3Plus tal com s’especifica a continuació, derivant-la de Match3. Deseu-la al mòdul match3plus (fitxer match3plus.py)
- class match3plus.Match3Plus(alçada, amplada, posf)¶
Crea un tauler de les mides indicades, inicialment tot buit i amb un forat a posf.
Atributs públics addicionals:
- posforat¶
Posició del forat (tupla amb les coordenades, fila i columna).
Mètodes:
- intercanvia(p, q)¶
Intercanvia la joia de la posició p amb la de la posició q únicament si ni p ni q no són la posició del forat. Es compleix que tant p com q són interiors al tauler.
Exemples d’ús de la classe:
>>> from match3plus import Match3Plus
>>> m = Match3Plus(4, 5, (2,0))
>>> m.alçada
4
>>> m.amplada
5
>>> m.posforat
(2, 0)
>>> len(m)
0
>>> m[0,0] = 1
>>> m[2,1] = 2
>>> m[2,2] = 3
>>> m[2,3] = 4
>>> m[3,2] = 5
>>> m.intercanvia((2,3), (3,2))
>>> m.intercanvia((2,1), (2,0)) # No es pot intercanviar a la posició del forat
>>> for f in range(4):
... for c in range(5):
... print(m[f,c], end='')
... print()
10000
00000
02350
00400
Disposeu de jocs de prova al fitxer tests-match3plus.txt