[Echecs] Dame : Ajout de la rafle

This commit is contained in:
Geoffrey Frogeye 2014-12-14 20:58:43 +01:00
parent f32ce16e71
commit 80a831bd38

View file

@ -116,6 +116,7 @@ class LogiqueDames(Logique):
""" """
Logique.__init__(self) Logique.__init__(self)
self.remplirGrille() self.remplirGrille()
self.rafle = False
def remplirGrille(self): def remplirGrille(self):
""" """
@ -124,17 +125,17 @@ class LogiqueDames(Logique):
for y in range(0, 3+1): for y in range(0, 3+1):
for x in range(0, self.CASES_COTE): for x in range(0, self.CASES_COTE):
if not self.eCaseBlanche(x, y): 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 y in range(self.CASES_COTE-3-1, self.CASES_COTE):
for x in range(0, self.CASES_COTE): for x in range(0, self.CASES_COTE):
if not self.eCaseBlanche(x, y): 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): def deplPossiblePion(self, x1, y1, x2, y2):
""" """
Vérifie si le déplacement est possible pour un pion. 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): if (self.joueur == self.BLANC and y1 > y2) or (self.joueur == self.NOIR and y1 < y2):
return self.MVT_OK return self.MVT_OK
else: else:
@ -169,10 +170,13 @@ class LogiqueDames(Logique):
y += sensY y += sensY
if self.ePiece(self.grille[x][y]): if self.ePiece(self.grille[x][y]):
if dist == distTot - 1 and not self.aSonTour(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: else:
return self.MVT_OBSTRUCTION return self.MVT_OBSTRUCTION
return self.MVT_OK # Vide if self.rafle:
return self.MVT_SOUFFLER
else:
return self.MVT_OK
else: else:
return self.MVT_N_AUTORISE return self.MVT_N_AUTORISE
@ -231,6 +235,17 @@ class LogiqueDames(Logique):
tableau.append([x2, y2]) tableau.append([x2, y2])
return tableau 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): def mvtsPossibles(self, x1, y1):
""" """
Donne la liste des mouvements possible pour la pièce donnée. Donne la liste des mouvements possible pour la pièce donnée.
@ -289,6 +304,10 @@ class LogiqueDames(Logique):
retour['valide'] = True retour['valide'] = True
retour['deplacer'].append([x1, y1, x2, y2]) retour['deplacer'].append([x1, y1, x2, y2])
self.grille[x1][y1], self.grille[x2][y2] = self.PCE_VIDE, self.grille[x1][y1] self.grille[x1][y1], self.grille[x2][y2] = self.PCE_VIDE, self.grille[x1][y1]
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.joueur = not self.joueur
self.vPartieFinie() self.vPartieFinie()
return retour return retour