[Echecs] Ajout de la promotion du pion

This commit is contained in:
Geoffrey Frogeye 2014-12-14 22:19:44 +01:00
parent 7d6253b3ab
commit a1f3dfb769
2 changed files with 18 additions and 4 deletions

View file

@ -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']

View file

@ -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