1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| from tkinter import *
def jouer(ligne, colonne) :
print('\n################\n')
couleurPion = tours[0]
print('Le joueur des pions', couleurPion, 'joue.')
imagePion = images['pion_' + couleurPion].name
print('L image des pions', couleurPion, 'est', imagePion)
bouton = boutons[ligne][colonne]
imageBouton = bouton.cget('image')
print('L image du bouton cliqué est', imageBouton)
# On définit une variable définissant si l'action joueur est terminée
actionJoueurTerminee = False
# Si l'image est celle d'un de ses pions
if imagePion == imageBouton :
print('Sélection d un pion', couleurPion)
# Si pionsCliques de sa couleur vaut None
if pionsCliques[couleurPion] is None :
# On enregistre la coordonnée
pionsCliques[couleurPion] = (ligne, colonne)
# On change la couleur de la bordure du bouton
bouton.config(highlightbackground='yellow')
# Le joueur a cliqué une seconde fois sur le même pion
# On annule la sélection.
else :
pionsCliques[couleurPion] = None
bouton.config(highlightbackground='grey')
# Si l'image est celle de sa base et que le nombre de ses boutons n'est pas
# encore égal à 3, on ajoute un pion.
elif imageBouton == 'base_' + couleurPion and pionsJoues[couleurPion] < 3 :
print('Ajout d un pion', couleurPion)
# Changement de l'image
bouton.config(image=images['pion_' + couleurPion])
# Incrémentation du nombre de pions
pionsJoues[couleurPion] += 1
# On stipule que le joueur a terminé son action
actionJoueurTerminee = True
else :
# S'il y a une coordonnée enregistrée
if pionsCliques[couleurPion] :
print('Faut faire le code du déplacement du pion')
print('La coordonnée du pion en sélection est', pionsCliques[couleurPion])
print('La coordonée du bouton cliqué est', ligne, colonne)
# C'est ici que tu dois vérifier en fonction de la coordonnée
# qui a été stockée si la ligne et la colonne du clic bouton est bien
# à une case de différence par rapport à cette coordonnée.
# Cela se résume en gros à vérifier que le déplacement est possible (le plus gros du boulot).
# Si oui, changer l'image du bouton cliqué.
# Changer l'image du bouton (vide ou base) situé à la coordonnée
# pionsCliques[couleurPion]
# initialiser pionsCliques[couleurPion] à None
# définir actionJoueurTerminee à True
# Si le joueur à terminé son action, on inverse le tour pour donner la main
# au joueur suivant.
if actionJoueurTerminee :
tours.reverse()
fenetre = Tk()
# On stipule l'argument name des images, ce qui nous facilitera la tâche pour
# les futures comparaisons.
images = {
'vide': PhotoImage(file="rien2.png", name='vide'),
'pion_bleu': PhotoImage(file="rienB.png", name='pion_bleu'),
'pion_rouge': PhotoImage(file="rienR.png", name='pion_rouge'),
'base_bleu': PhotoImage(file="base1.png", name='base_bleu'),
'base_rouge': PhotoImage(file="base2.png", name='base_rouge'),
}
boutons = []
tours = ['rouge', 'bleu']
pionsJoues = {'rouge': 0, 'bleu': 0}
pionsCliques = {'rouge': None, 'bleu': None}
for i in range(8):
rangee = []
for j in range(8):
bout = Button(fenetre, image=images['vide'], command=lambda i=i, j=j: jouer(i, j))
bout.grid(row=i, column=j)
rangee.append(bout)
boutons.append(rangee)
# Changement des images des bases
boutons[0][0].configure(image=images['base_rouge'])
boutons[7][7].configure(image=images['base_bleu'])
fenetre.minsize(images['vide'].width() * 8, images['vide'].height() * 8)
fenetre.mainloop() |
Partager