| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- """Projection du deplacement d'un pion"""
- from PyQt4.QtCore import *
- from PyQt4.QtGui import *
- from Forme import Forme
- class ProjectionDep():
- def __init__(self, plateau):
- self.plateau = plateau
- self._pion = None
-
- self._coord = (-1,-1)
- self._forme = Forme(self.plateau.formeCases)
- self._nbRotations = 0
- def creer(self, pion):
- self._forme.definirForme(pion.formeDef[self.plateau.formeCases])
- def majCoord(self, coord):
- self.desactiver()
- self._coord = coord
- self.maj()
- def majRotation(self, modRotation):
- self.desactiver()
- self._nbRotations += modRotation
- self.maj()
- def desactiver(self):
- for coord in self._forme.listeCases(self._coord, self._nbRotations):
- self.plateau.cases[coord].majEstCibleCurseur(False)
-
- def projectionValide(self):
- """la projection est valide si toutes les cases de la forme existent"""
- valide = True
- for coord in self._forme.listeCases(self._coord, self._nbRotations):
- if not coord in self.plateau.cases:
- valide = False
- break
- return valide
- def deplacementValide(self):
- """le deplacement est valide si toutes les cases de la forme sont franchissables"""
- valide = False
- compte = 0
- ok = 0
- if self.projectionValide():
- for coord in self._forme.listeCases(self._coord, self._nbRotations):
- compte += 1
- if self.plateau.cases[coord].estFranchissable(self._pion.z):
- ok += 1
- else:
- #si la case est occupee par le pion lui-meme
- if self.plateau.cases[coord].estOccupeePar(self._pion.z) == self._pion:
- ok += 1
- valide = (ok == compte and compte > 0)
- return valide
- def maj(self):
- if self.projectionValide():
- depValide = self.deplacementValide()
- for coord in self._forme.listeCases(self._coord, self._nbRotations):
- self.plateau.cases[coord].majEstCibleCurseur(True, depValide)
-
-
|