| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- """Projection du deplacement d'un pion"""
- from Forme import Forme
- class ProjectionDep():
- def __init__(self, plateau):
- self.plateau = plateau
- self._active = False
- self._pion = None
-
- self._coord = (-1,-1)
- self._forme = Forme(self.plateau.formeCases)
- self._nbRotations = 0
-
- def creer(self, pion):
- self._pion = pion
- self._forme.definirForme(pion.formeDef[self.plateau.formeCases])
- self._coord = pion.position
- self._nbRotations = pion.nbRotations
- self._active = True
- def majCoord(self, coord):
- self.desactiver()
- self._coord = coord
- self.maj()
- def majRotation(self, modRotation):
- self.desactiver()
- self._nbRotations += modRotation
- self.maj()
- def coord(self):
- return self._coord
- def nbRotations(self):
- return self._nbRotations
- def listeCoord(self):
- return self._forme.listeCases(self._coord, self._nbRotations)
- def listeCases(self):
- return [self.plateau.cases[coord] for coord in self.listeCoord()]
-
- def desactiver(self):
- for coord in self._forme.listeCases(self._coord, self._nbRotations):
- if coord in self.plateau.cases:
- self.plateau.cases[coord].majEstCibleCurseur(False)
- self.active = False
- def existe(self):
- """la projection est valide si toutes les cases de la forme existent
- si non, elle n'apparait pas"""
- for coord in self._forme.listeCases(self._coord, self._nbRotations):
- if not coord in self.plateau.cases: return False
- return True
- def valide(self):
- """le deplacement est valide si toutes les cases de la forme
- sont franchissables par le pion"""
- if not self.existe(): return False
- return self._pion.projectionValide(self)
-
- def maj(self):
- self._active = True
- if self.existe():
- depValide = self.valide()
- for coord in self._forme.listeCases(self._coord, self._nbRotations):
- self.plateau.cases[coord].majEstCibleCurseur(True, depValide)
-
-
-
|