bonjour a tous je suis en terminal S en spécialité ISN et je dois faire un programme pour la fon de l'année. Mais le problème avec mon programme c'est que lorsqu'on la terminé on peut refaire les graphisme pour rejouer mais on ne peux pas rejouer si vous pouviez m'aider parce que la je désespère un peu merci voila mon programme (pour les images vous n'avez qu'a en crée 5 au nom indiquer de format 150*300

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#############################################################IMPORTATION################################################################
 
from tkinter import*
from tkinter.messagebox import *
 
#############################################################DEFINITION#################################################################
 
def regle() :
    showinfo("Règle","Le principe de se casse tête est de transferer les blocs se trouvant dans la première colonne sur la troisième dans le même ordre. "
             "On ne peut déplacé qu'un seul bloc a la fois et mettre un bloc plus petit sur un plus grand mais pas l'inverse. "
             "A vous de jouez.", default = 'ok') 
def jouer() :
 
    global valeur
 
    Can1.delete(ALL)
    valeur=0
 
    # création des lignes et des colonnes du tableau
    for i in range( nbColonnes+1 ):
        Can1.create_line( x0+cc*i, y0, x0+cc*i, y0 + nbLignes*cl )
 
    for i in range( nbLignes+1 ):
        Can1.create_line( x0, y0+cl*i, x0+nbColonnes*cc , y0+cl*i )
 
    fenetre.update()
 
    # création des images dans le tableau    
    Can1.create_image(182,107,image = C1)
 
    Can1.create_image(182,257,image = C2)
 
    Can1.create_image(182,407,image = C3)
 
    Can1.create_image(182,557,image = C4)
 
    Can1.create_image(182,707.5,image = C5)
 
 
def caseClicG(event):
 
    global valeur
 
    # détermine les coordonnées du clic dans x et y
    x, y = event.x, event.y
 
    # calcule la ligne et la colonne correspondant au clic
    colonne = int((x-x0)/cc)
    ligne = int((y-y0)/cl)+1
 
    print(ligne,colonne)
 
    # modifie la valeur de la case dans le tableau
    if tableau[ligne][colonne] != 0 and tableau[ligne-1][colonne] == 0 and valeur == 0:
        valeur = tableau[ligne][colonne]
 
        print("valeur : ", valeur)
 
        tableau[ligne][colonne] = 0
 
        print(ligne,colonne)
 
        # créer un rectangle blanc pour faire disparaitrre l'image
        Can1.create_rectangle((colonne*300)+x0,(ligne*150)+y0,(colonne+1)*300+x0,(ligne-1)*150+y0, fill = 'white')
    else :
        showinfo('ATTENTION', 'VOUS NE POUVEZ PAS EFFECTUER CE MOUVEMENT')
 
    print (tableau)
 
 
def caseClicD(event):
 
    global valeur
 
    # détermine les coordonnées du clic dans x et y
    x, y = event.x, event.y
 
    # calcule la ligne et la colonne correspondant au clic
    colonne = int((x-x0)/cc)
    ligne = int((y-y0)/cl)+1
 
    print(ligne,colonne)
 
    # modifie la valeur de la case dans le tableau
    if tableau[ligne][colonne] == 0 and  tableau[ligne+1][colonne] != 0 and tableau[ligne+1][colonne] > valeur :
       tableau[ligne][colonne] = valeur
 
       # créer l'image correspondant a la valeur dans le tableau de la fenêtre tkinter
       if valeur == 1 :
           Can1.create_image((colonne*300)+150+x0,((ligne-1)*150)+75+y0, image = C1)
 
       if valeur == 2 :
           Can1.create_image((colonne*300)+150+x0,((ligne-1)*150)+75+y0, image = C2)           
 
       if valeur == 3 :
           Can1.create_image((colonne*300)+150+x0,((ligne-1)*150)+75+y0, image = C3)           
 
       if valeur == 4 :
           Can1.create_image((colonne*300)+150+x0,((ligne-1)*150)+75+y0, image = C4)           
 
       if valeur == 5 :
           Can1.create_image((colonne*300)+150+x0,((ligne-1)*150)+75+y0, image = C5)
       valeur = 0
 
    else :
        showinfo('ATTENTION', 'VOUS NE POUVEZ PAS EFFECTUER CE MOUVEMENT', default = 'ok')
    print (tableau)
 
    if tableau == [[0, 0, 0], [0, 0, 1], [0, 0, 2], [0, 0, 3], [0, 0, 4], [0, 0, 5], [9, 9, 9]] :
        showinfo('FELICITATION', 'VOUS AVEZ REUSSI SE CASSE TÊTE. SI VOUS VOULEZ REESSAYE APPUYER SUR JOUER SINON APPUYER SUR QUITTER', default = 'ok')
 
##########################################################VARIABLES####################################################################        
 
valeur = 0
 
nbLignes = 5	      # nb de lignes
 
nbColonnes = 3	      # nb de colonnes
 
cl = 150	      # hauteur d'une case
 
cc= 300               # lageur d'une case
 
x0, y0 = 32, 32       # coordonnées du point en haut à gauche de la grille
 
tableau = [[0, 0, 0], # une ligne au dessus pour faire croire qu'il n'y a rien sur la pile
           [1, 0, 0],
           [2, 0, 0],
           [3, 0, 0],
           [4, 0, 0],
           [5, 0, 0],
           [9, 9, 9]] # une ligne au dessous pour faire croire qu'il y a une image
 
print (tableau)
 
###########################################################CANVAS######################################################################
 
fenetre = Tk()
 
 
Can1 = Canvas( fenetre, height = 800, width = 1000, bg = "white" )
Can1.pack( side = LEFT )
 
 
#importation des images
C1 = PhotoImage ( file = "rouge_1.gif") # Premier carrée
 
C2 = PhotoImage ( file = "rouge_2.gif") # Deuxième carrée
 
C3 = PhotoImage ( file = "rouge_3.gif") # Troisième carrée
 
C4 = PhotoImage ( file = "rouge_4.gif") # Quatrième carrée
 
C5 = PhotoImage ( file = "rouge_5.gif") # Cinquième carrée
 
 
texte1 = Label(fenetre, text='Clic gauche sélectionne et clic droit déplace')
texte1.pack()
 
 
Can1.bind("<Button-1>", caseClicG)
Can1.bind("<Button-3>", caseClicD)
 
quitter = Button( fenetre, text = "Quitter", command = fenetre.destroy )
quitter.pack( side = BOTTOM )
 
jouer = Button( fenetre, text = "Jouer", command = jouer )
jouer.pack( side = BOTTOM )
 
regle = Button( fenetre, text = "Règle", command = regle )
regle.pack( side = BOTTOM )
 
 
Can1.pack()
 
fenetre.mainloop()