From a1f3dfb769ff897f2001d9cc3ec39848e042bc41 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Sun, 14 Dec 2014 22:19:44 +0100 Subject: [PATCH] [Echecs] Ajout de la promotion du pion --- S1/Echecs/guiTk.py | 9 +++++++-- S1/Echecs/logique.py | 13 +++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/S1/Echecs/guiTk.py b/S1/Echecs/guiTk.py index 78688cc..4dfc905 100644 --- a/S1/Echecs/guiTk.py +++ b/S1/Echecs/guiTk.py @@ -342,8 +342,8 @@ class PlateauTk: """ test = self.logique.dPiece(x1, y1, x2, y2) if test['valide'] == True: # Si déplacement possible - for s in test['supprimer']: - self.animerF(self.grillePieces[s[0]][s[1]]) + # TODO L'ordre de vérification des animations importe beaucoup. Il faudrait trouver un + # moyen de rendre ceci moins fragile for d in test['deplacer']: self.grillePieces[d[2]][d[3]], self.grillePieces[d[0]][d[1]] = \ self.grillePieces[d[0]][d[1]], False @@ -351,6 +351,11 @@ class PlateauTk: (d[2] + .5) * self.coteCase, (d[3] + .5) * self.coteCase, self.grillePieces[d[2]][d[3]]) + for s in test['supprimer']: + self.animerF(self.grillePieces[s[0]][s[1]]) + for a in test['ajouter']: + # TODO Ajouter une animation + self.cPiece(a[0], a[1], a[2]) else: self.statut('Déplacment invalide ! (' + test['message'] + ')') return test['valide'] diff --git a/S1/Echecs/logique.py b/S1/Echecs/logique.py index 9e921c3..7cd31ff 100644 --- a/S1/Echecs/logique.py +++ b/S1/Echecs/logique.py @@ -87,6 +87,7 @@ class LogiqueDames(Logique): Logique du jeu de Dames """ CASES_COTE = 10 + RANGEES = 4 PCE_PION = 1 PCE_DAME = 2 @@ -122,11 +123,11 @@ class LogiqueDames(Logique): """ Remplis la grille avec les pièces nécessaire à une nouvelle partie. """ - for y in range(0, 3+1): + for y in range(0, self.RANGEES): for x in range(0, self.CASES_COTE): if not self.eCaseBlanche(x, y): 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-self.RANGEES, 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_PION @@ -290,6 +291,7 @@ class LogiqueDames(Logique): retour = { 'valide': False, 'message': test, + 'ajouter': [], # Pièces à ajouter 'deplacer': [], # Pièces à déplacer 'supprimer': [], # Pièces à supprimer } @@ -306,6 +308,13 @@ class LogiqueDames(Logique): self.rafle = True else: self.rafle = False + piece = self.grille[x2][y2] + if self.tPiece(piece) == self.PCE_PION and ((self.ePieceBlanche(piece) and \ + y2 == 0) or (self.ePieceNoire(piece) and y2 == self.CASES_COTE - 1)): + self.grille[x2][y2] = (self.DECALAGE_BLANCS if self.ePieceBlanche(piece) else \ + self.DECALAGE_NOIRS) + self.PCE_DAME + retour['supprimer'].append([x2, y2]) + retour['ajouter'].append([x2, y2, self.grille[x2][y2]]) self.joueur = not self.joueur self.vPartieFinie() return retour