diff --git a/S1/Echecs/logique.py b/S1/Echecs/logique.py index 71cd339..59074cd 100644 --- a/S1/Echecs/logique.py +++ b/S1/Echecs/logique.py @@ -116,6 +116,7 @@ class LogiqueDames(Logique): """ Logique.__init__(self) self.remplirGrille() + self.rafle = False def remplirGrille(self): """ @@ -124,17 +125,17 @@ class LogiqueDames(Logique): for y in range(0, 3+1): for x in range(0, self.CASES_COTE): if not self.eCaseBlanche(x, y): - self.grille[x][y] = self.DECALAGE_NOIRS + self.PCE_DAME + self.grille[x][y] = self.DECALAGE_NOIRS + self.PCE_PION for y in range(self.CASES_COTE-3-1, self.CASES_COTE): for x in range(0, self.CASES_COTE): if not self.eCaseBlanche(x, y): - self.grille[x][y] = self.DECALAGE_BLANCS + self.PCE_DAME + self.grille[x][y] = self.DECALAGE_BLANCS + self.PCE_PION def deplPossiblePion(self, x1, y1, x2, y2): """ Vérifie si le déplacement est possible pour un pion. """ - if abs(x2-x1) == 1 and abs(y2-y1) == 1: + if abs(x2-x1) == 1 and abs(y2-y1) == 1 and not self.rafle: if (self.joueur == self.BLANC and y1 > y2) or (self.joueur == self.NOIR and y1 < y2): return self.MVT_OK else: @@ -169,10 +170,13 @@ class LogiqueDames(Logique): y += sensY if self.ePiece(self.grille[x][y]): if dist == distTot - 1 and not self.aSonTour(self.grille[x][y]): - return self.MVT_SAUT # Saut + return self.MVT_SAUT else: return self.MVT_OBSTRUCTION - return self.MVT_OK # Vide + if self.rafle: + return self.MVT_SOUFFLER + else: + return self.MVT_OK else: return self.MVT_N_AUTORISE @@ -231,6 +235,17 @@ class LogiqueDames(Logique): tableau.append([x2, y2]) return tableau + def sautsPossibles(self, x1, y1): + """ + Donne la liste des mouvements possible pour la pièce donnée. + """ + tableau = [] + for x2 in range(0, self.CASES_COTE): + for y2 in range(0, self.CASES_COTE): + if self.mvtPossible(x1, y1, x2, y2) == self.MVT_SAUT: + tableau.append([x2, y2]) + return tableau + def mvtsPossibles(self, x1, y1): """ Donne la liste des mouvements possible pour la pièce donnée. @@ -289,7 +304,11 @@ class LogiqueDames(Logique): retour['valide'] = True retour['deplacer'].append([x1, y1, x2, y2]) self.grille[x1][y1], self.grille[x2][y2] = self.PCE_VIDE, self.grille[x1][y1] - self.joueur = not self.joueur + if test == self.MVT_SAUT and len(self.sautsPossibles(x2, y2)) > 0: + self.rafle = True + else: + self.rafle = False + self.joueur = not self.joueur self.vPartieFinie() return retour