"""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)