Bonjour, je suis en classe de terminale et pour mon projet d'ISN (Informatique) j'ai choisi de réaliser un jeu de Uno sur python avec une interface Tkinter, un joueur contre un ordinateur. Je vous explique mon problème: Je suis entrain de faire une fonction jeu qui s'éxécuterais en boucle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def jeu():
    table_jeu.unbind_all
    valeur, couleur = talon[-1][0], talon[-1][1]  
    cartes_jouables =[]
    for carte in carte_joueur_1:  
        if carte[0] == valeur or carte[1] == couleur or carte=="+4" or carte=="4c": 
            cartes_jouables.append (carte)
    if len (cartes_jouables) != 0:  #au moins une carte jouable
        table_jeu.tag_bind("carte_joueur_1", "<Button-1>", jouer_carte)
    else: #il n'a plus de cartes jouables (pioche)
        bou1.config (state = tkinter.NORMAL)
        time.sleep(2)
        ordinateur ()
        #il ne se passe rien parce que normalement ca doit faire une boucle et revenir au debut de la fonction jeu()
Dans un premier temps, elle vérifie si le joueur 1 a dans sa liste de carte au moins une carte jouable, et si oui, il est alors possible de jouer une carte avec cette fonction :
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
def jouer_carte (event):
    global image, image_talon, images_cartes_joueur_1,carte_joueur_1, selection_carte, i
# items du canvas sur lequels le clic souris a été fait
    items = table_jeu.find_overlapping(event.x, event.y, event.x, event.y)
    i = len(carte_joueur_1) - 1 # index max des cartes joueurs
# Parcours des images de droite à gauche
    for image in images_cartes_joueur_1[::-1]:
# Si le clic correspond à cette image
        if image in items:
            break
        i -= 1
    else:
# Le clic n'a pas été fait sur une image des cartes joueurs
# Il n'y a rien à faire
        return
    carte = carte_joueur_1[i]
# S'il y avait une sélection et que c'est la même que la nouvelle
    if selection_carte == i:
        print("Le joueur joue la carte :", carte)
 
        #-------------------------------------conditions d'une carte posable-----------------------------------------
        if carte == '+4':   # +4 carte à l'adversaire
            talon.append (carte)
            deplacement_carte ()
            w = 200
            for i in range (4):        
                p=cartes.pop()
                n=len (carte_joueur_2)
                o= (n*CHEVAUCHEMENT_CARTE)+ w
                carte_joueur_2.append(p)
                table_jeu.create_image(o, 150, image=carte_dos, tags="carte_joueur_2")
                images_cartes_joueur_2.append(p)
                o += CHEVAUCHEMENT_CARTE
                time.sleep( 1 )
                table_jeu.update()
            affichage_choix_couleur ()
 
        elif carte == '4c':    #changement de couleur
            talon.append (carte)
            deplacement_carte ()
            affichage_choix_couleur ()
 
        elif carte [1] == talon[-1][1] and carte [0] == "j" or talon[-1][0]=="j" and carte[0] == "j": # +2
            talon.append (carte)
            deplacement_carte ()
            w = 200
            for i in range (2):        
                p=cartes.pop()
                n=len (carte_joueur_2)
                o= (n*CHEVAUCHEMENT_CARTE)+ w
                carte_joueur_2.append(p)
                table_jeu.create_image(o, 150, image=carte_dos, tags="carte_joueur_2")
                images_cartes_joueur_2.append(p)
                o += CHEVAUCHEMENT_CARTE
                time.sleep( 1 )
                table_jeu.update()
 
        elif carte [0] == "s" and carte [1]==talon[-1][1] or talon[-1][0]=="s" and carte [0]=="s" : # joker passe ton tour
                talon.append(carte)   
                deplacement_carte()
                #comment faire rejouer l'adversaire
 
        elif carte [1] == talon[-1][1]:     # carte de la meme couleur du talon
            talon.append (carte)
            deplacement_carte()
 
 
        elif carte [0] == talon[-1][0]:  # carte du meme chiffre du talon
            talon.append (carte)
            deplacement_carte ()
        ordinateur ()
        #retourne au debut de jeu
# Soit il n'y avait pas de sélection, soit elle différente de la précédente
    else:
# Il y avait une sélection
        if selection_carte is not None:
            print("Le joueur choisit une autre carte :", carte)
# désélection de la précédente carte
            image_carte_precedente = images_cartes_joueur_1[selection_carte]
            table_jeu.move(image_carte_precedente, 0, DECALAGE_SELECTION_CARTE)
        else:
# 1ère sélection
            print("Le joueur selectionne la carte :", carte)
# Mise en sélection de la carte
        table_jeu.move(image, 0, -DECALAGE_SELECTION_CARTE)
        selection_carte = i
Et si il n'a aucune carte jouable, alors il pioche avec cette fonction:
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
def pioche ():
    pioche=cartes.pop ()
    if pioche[0] == talon[-1][0] or pioche [1] == talon[-1][1] or pioche=="+4" or pioche[1] == talon[-1][0] or pioche[0] == talon[-1][1] or pioche=="4c":  # et si on pioche un joker ? // verifier toute les conditions si il peut jouer et relancer carte posable
        print ("Tu peux jouer la carte pioché") #vérification
        n=len (carte_joueur_1)
        carte_joueur_1.append (pioche ) 
        o= (n*CHEVAUCHEMENT_CARTE)+ 200
        image_p=table_jeu.create_image(o, 550, image=images_cartes[pioche], tags="carte_joueur_1")
        images_cartes_joueur_1.append(image_p)
        o += CHEVAUCHEMENT_CARTE
        table_jeu.update()
        bou1.config (state = tkinter.DISABLED)
        #relancer jouer carte (event)
 
    else :  
        print( "carte pioché pas jouable")
        n=len (carte_joueur_1)
        carte_joueur_1.append (pioche ) 
        o= (n*CHEVAUCHEMENT_CARTE)+ 200
        image_p=table_jeu.create_image(o, 550, image=images_cartes[pioche], tags="carte_joueur_1")
        images_cartes_joueur_1.append(image_p)
        o += CHEVAUCHEMENT_CARTE
        table_jeu.update()
        bou1.config (state = tkinter.DISABLED)
        ordinateur()
        #lancer fonction de l'ordi parce que carte piochée pas jouable
Ce bouton qui est crée comme ca:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
image_pioche = tk.PhotoImage(file='imagecarte/dos.png')
bou1 = tk.Button(uno, text='Pioche',image=image_pioche, command = pioche)
bou1.place(x=1200, y=300)
bou1.config (state = tkinter.DISABLED)
Je vous met le code en entier en fin de message si vous avez une question.

MON PROBLEME : Quand je fait le bind de ma fonction jouer_carte, il faudrait que après avoir jouer une carte, le programme retourne au debut de ma fonction jeu() et vérifie si il peut jouer ou si il doit piocher, et pareil après avoir piocher. En effet, quand je bind les cartes sur la table de jeu, elle reste dans cette "fonction" et ne vérifie plus si le joueur a une carte jouable ou si il doit piocher.

Je ne sais pas si vous m'avez bien compris. Est ce que vous pourriez m'aider ?

Merci beaucoup !

PS: mon code en entier:
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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import random   
from random import choice 
import tkinter as tk 
import tkinter as tkinter
from tkinter import Toplevel
import time
from time import sleep
 
def initialisation():       # distribution des cartes et créations d'images
    joker=["+4","+4","jV","jV","4c","4c","jJ","jJ","sV","sV","+4","+4","sJ","sJ","4c","4c","jB","jB","sB","sB","jR","jR","sR","sR"]       
    cartes=["9V","9V","8V","8V","7V","7V","6V","6V","5V","5V","4V","4V","3V","3V","2V","2V","1V","1V","0V","9J","9J","8J","8J","7J","7J","6J","6J","5J","5J","4J","4J","3J","3J","2J","2J","1J","1J","0J","9R","9R","8R","8R","7R","7R","6R","6R","5R","5R","4R","4R","3R","3R","2R","2R","1R","1R","0R","9B","9B","8B","8B","7B","7B","6B","6B","5B","5B","4B","4B","3B","3B","2B","2B","1B","1B","0B"]      
    random.shuffle (joker)   
    random.shuffle (cartes)  
 
    images_cartes = dict()
    for carte in set(cartes): 
        image = "imagecarte/" + carte.lower() + ".png" 
        images_cartes[carte] = tk.PhotoImage(file=image)
    talon=[cartes.pop()] 
 
    image_joker = dict ()
    for carte in set (joker):
        image = "imagecarte/" + carte.lower() + ".png"
        image_joker[carte] = tk.PhotoImage(file=image) 
 
    cartes.extend(joker)
    random.shuffle(cartes)
    images_cartes.update(image_joker)
    carte_joueur_1=[]        
    carte_joueur_2=[]          
    for i in range (7):         
        carte_joueur_1.append(cartes.pop())         
        carte_joueur_2.append(cartes.pop())          
    return images_cartes,joker,cartes,carte_joueur_1,carte_joueur_2,talon
 
def affichage_choix_couleur (): #  fenetre pour choisir une couleur apres un joker
    w = Toplevel (uno)
    # le tableau à afficher : [0, 1, 2, 3]
    tableau = [[0,1],[2,3]]
    # taille d'une "case"
    size = 100
    couleurs = {0: "green", 1: "blue", 2:"red", 3:"yellow"} # les 4 couleurs à utiliser
    can = tk.Canvas(w, width=200, height=200)# création canevas
    can.grid()
 
    # affichage du tableau de cette fenetre
    for j in range(2):
        for i in range(2) :
            can.create_rectangle(i * size,
                            j*size,
                            i * size + size,
                            j*size+size,
                            fill = couleurs[tableau[i][j]])
 
    def couleur(evt):      # renvoie couleur choisis suite a un joker
        pos_x = int(evt.x / size)
        pos_y = int(evt.y / size)
 
        if tableau[pos_x][pos_y] == 0:
            print ("V")
            nouvelle_couleur = ["+V"]
            w.destroy()
            talon [-1]= "".join(nouvelle_couleur)
            ordinateur ()
        elif tableau[pos_x][pos_y] == 1:
            print ("B")
            nouvelle_couleur = ["+B"]
            w.destroy()
            talon [-1]= "".join(nouvelle_couleur)
            ordinateur ()
        elif tableau[pos_x][pos_y] == 2:
            print ("R")
            nouvelle_couleur = ["+R"]
            w.destroy()
            talon [-1]= "".join(nouvelle_couleur)
            ordinateur ()
        elif tableau[pos_x][pos_y] == 3:
            print ("J")
            nouvelle_couleur = ["+J"]
            w.destroy()
            talon [-1]= "".join(nouvelle_couleur)
            ordinateur ()
 
    can.bind("<Button-1>", couleur) # binding de la fonction couleur sur le canevas
    w.mainloop()  # boucle principale
 
def deplacement_carte():
    global image, image_talon, images_cartes_joueur_1,carte_joueur_1, selection_carte, i
        # Suppression du tag pour que la carte ne puisse plus être cliquable
    table_jeu.dtag(image, "carte_joueur_1")
# Déplacement de la carte sur le talon
    table_jeu.coords(image, COORD_TALON)
 # S'il y avait déjà une image sur le talon, on la supprime
    if image_talon is not None:
        table_jeu.delete(image_talon)
# On affecte à l'image du talon la nouvelle carte
    image_talon = image
# Suppression de l'image et de la carte
    images_cartes_joueur_1.pop(i)
    carte_joueur_1.pop(i)
# Décalage vers la gauche des images (pour ne pas laisser de trou entre les cartes
    for ii in range(i, len(carte_joueur_1)):
        table_jeu.move(images_cartes_joueur_1[ii], -CHEVAUCHEMENT_CARTE, 0)
# On remet à None la selection car il n'y en a plus.
    selection_carte = None 
 
 
def jouer_carte (event):
    global image, image_talon, images_cartes_joueur_1,carte_joueur_1, selection_carte, i
# items du canvas sur lequels le clic souris a été fait
    items = table_jeu.find_overlapping(event.x, event.y, event.x, event.y)
    i = len(carte_joueur_1) - 1 # index max des cartes joueurs
# Parcours des images de droite à gauche
    for image in images_cartes_joueur_1[::-1]:
# Si le clic correspond à cette image
        if image in items:
            break
        i -= 1
    else:
# Le clic n'a pas été fait sur une image des cartes joueurs
# Il n'y a rien à faire
        return
    carte = carte_joueur_1[i]
# S'il y avait une sélection et que c'est la même que la nouvelle
    if selection_carte == i:
        print("Le joueur joue la carte :", carte)
 
        #-------------------------------------conditions d'une carte posable-----------------------------------------
        if carte == '+4':   # +4 carte à l'adversaire
            talon.append (carte)
            deplacement_carte ()
            w = 200
            for i in range (4):        
                p=cartes.pop()
                n=len (carte_joueur_2)
                o= (n*CHEVAUCHEMENT_CARTE)+ w
                carte_joueur_2.append(p)
                table_jeu.create_image(o, 150, image=carte_dos, tags="carte_joueur_2")
                images_cartes_joueur_2.append(p)
                o += CHEVAUCHEMENT_CARTE
                time.sleep( 1 )
                table_jeu.update()
            affichage_choix_couleur ()
 
        elif carte == '4c':    #changement de couleur
            talon.append (carte)
            deplacement_carte ()
            affichage_choix_couleur ()
 
        elif carte [1] == talon[-1][1] and carte [0] == "j" or talon[-1][0]=="j" and carte[0] == "j": # +2
            talon.append (carte)
            deplacement_carte ()
            w = 200
            for i in range (2):        
                p=cartes.pop()
                n=len (carte_joueur_2)
                o= (n*CHEVAUCHEMENT_CARTE)+ w
                carte_joueur_2.append(p)
                table_jeu.create_image(o, 150, image=carte_dos, tags="carte_joueur_2")
                images_cartes_joueur_2.append(p)
                o += CHEVAUCHEMENT_CARTE
                time.sleep( 1 )
                table_jeu.update()
 
        elif carte [0] == "s" and carte [1]==talon[-1][1] or talon[-1][0]=="s" and carte [0]=="s" : # joker passe ton tour
                talon.append(carte)   
                deplacement_carte()
                #comment faire rejouer l'adversaire
 
        elif carte [1] == talon[-1][1]:     # carte de la meme couleur du talon
            talon.append (carte)
            deplacement_carte()
 
 
        elif carte [0] == talon[-1][0]:  # carte du meme chiffre du talon
            talon.append (carte)
            deplacement_carte ()
        ordinateur ()
        #retourne au debut de jeu
# Soit il n'y avait pas de sélection, soit elle différente de la précédente
    else:
# Il y avait une sélection
        if selection_carte is not None:
            print("Le joueur choisit une autre carte :", carte)
# désélection de la précédente carte
            image_carte_precedente = images_cartes_joueur_1[selection_carte]
            table_jeu.move(image_carte_precedente, 0, DECALAGE_SELECTION_CARTE)
        else:
# 1ère sélection
            print("Le joueur selectionne la carte :", carte)
# Mise en sélection de la carte
        table_jeu.move(image, 0, -DECALAGE_SELECTION_CARTE)
        selection_carte = i
 
def pioche ():
    pioche=cartes.pop ()
    if pioche[0] == talon[-1][0] or pioche [1] == talon[-1][1] or pioche=="+4" or pioche[1] == talon[-1][0] or pioche[0] == talon[-1][1] or pioche=="4c":  # et si on pioche un joker ? // verifier toute les conditions si il peut jouer et relancer carte posable
        print ("Tu peux jouer la carte pioché") #vérification
        n=len (carte_joueur_1)
        carte_joueur_1.append (pioche ) 
        o= (n*CHEVAUCHEMENT_CARTE)+ 200
        image_p=table_jeu.create_image(o, 550, image=images_cartes[pioche], tags="carte_joueur_1")
        images_cartes_joueur_1.append(image_p)
        o += CHEVAUCHEMENT_CARTE
        table_jeu.update()
        bou1.config (state = tkinter.DISABLED)
        #relancer jouer carte (event)
 
    else :  
        print( "carte pioché pas jouable")
        n=len (carte_joueur_1)
        carte_joueur_1.append (pioche ) 
        o= (n*CHEVAUCHEMENT_CARTE)+ 200
        image_p=table_jeu.create_image(o, 550, image=images_cartes[pioche], tags="carte_joueur_1")
        images_cartes_joueur_1.append(image_p)
        o += CHEVAUCHEMENT_CARTE
        table_jeu.update()
        bou1.config (state = tkinter.DISABLED)
        ordinateur()
        #lancer fonction de l'ordi parce que carte pioché pas jouable
 
 
def ordinateur ():
    time.sleep (2)
    cartes_jouables = []  
    valeur, couleur = talon[-1][0], talon[-1][1]   
    for carte in carte_joueur_2:  
         if carte[0] == valeur or carte[1] == couleur or carte=="+4" or carte=="4c":  
             cartes_jouables.append(carte)  # est ce que ca prend TOUTES les cartes qu'il peut jouer ou que la première ?
             carte_jouee_ordi = choice (cartes_jouables)  
 
             if carte_jouee_ordi == '+4':
                 u=images_cartes_joueur_2.pop()
                 table_jeu.delete(u)
                 carte_joueur_2.remove(carte_jouee_ordi)  
                 talon.append(carte_jouee_ordi) 
                 table_jeu.create_image(z, 300, image=images_cartes[carte_jouee_ordi], tags="carte_talon")
                 nouvelle_couleur = []
                 liste= ["+B","+V","+J","+R"]
                 nouvelle_couleur.append (random.choice(liste))
                 talon [-1]= "".join(nouvelle_couleur)
                 print ("L'adversaire vient de jouer un +4") 
                 print ("Tu dois jouer sur du ", talon[-1][1])
                 for i in range (4):        # +4  carte dans tes cartes
                     p=cartes.pop()
                     n=len (carte_joueur_1)
                     o= (n*CHEVAUCHEMENT_CARTE)+ 200
                     carte_joueur_1.append(p)
                     image1=table_jeu.create_image(o, 550, image=images_cartes[p], tags="carte_joueur_1")
                     images_cartes_joueur_1.append(image1)
                     o += CHEVAUCHEMENT_CARTE
                     sleep( 1 )
                     table_jeu.update() 
                 return;
 
             elif carte_jouee_ordi == '4c':
                 u=images_cartes_joueur_2.pop()
                 table_jeu.delete(u)
                 carte_joueur_2.remove(carte_jouee_ordi)  
                 talon.append(carte_jouee_ordi)    
                 table_jeu.create_image(z, 300, image=images_cartes[carte_jouee_ordi], tags="carte_talon")
                 print("L'ordinateur a joué un changement de couleur")  
                 liste= ["B","V","J","R"]
                 nouvelle_couleur = ["*"] 
                 nouvelle_couleur.append (random.choice (liste))
                 talon [-1]= "".join(nouvelle_couleur)
                 print ("Tu dois jouer sur du ", talon[-1][1])
 
                 return;
 
             elif carte_jouee_ordi [1] == talon[-1][1] and carte_jouee_ordi [0] == "j" or talon[-1][0]=="j" and carte_jouee_ordi [0] == "j":    # +2
                 u=images_cartes_joueur_2.pop()
                 table_jeu.delete(u)
                 carte_joueur_2.remove(carte_jouee_ordi)  
                 talon.append(carte_jouee_ordi)
                 table_jeu.create_image(z, 300, image=images_cartes[carte_jouee_ordi], tags="carte_talon")
                 print("L'adversaire as joué un +2")   
                 print ("La dernière carte posée est :  ",talon [-1]  )
                 for i in range (2):        # +2  carte à l'adversaire
                     p=cartes.pop()
                     n=len (carte_joueur_1)
                     o= (n*CHEVAUCHEMENT_CARTE)+ 200
                     carte_joueur_1.append(p)
                     image2=table_jeu.create_image(o, 550, image=images_cartes[p], tags="carte_joueur_1")
                     images_cartes_joueur_1.append(image2)
                     o += CHEVAUCHEMENT_CARTE
                     sleep( 1 )
                     table_jeu.update() 
                 return;
 
             elif carte_jouee_ordi [0] == "s" and carte_jouee_ordi [1]==talon[-1][1] or talon[-1][0]=="s" and carte_jouee_ordi [0]=="s" : # joker passe ton tour
                 u=images_cartes_joueur_2.pop()
                 table_jeu.delete(u)
                 carte_joueur_2.remove(carte_jouee_ordi)  
                 talon.append(carte_jouee_ordi)  
                 table_jeu.create_image(z, 300, image=images_cartes[carte_jouee_ordi], tags="carte_talon")
                 print("L'adversaire as joué un joker :", talon[-1])
                 sleep (2)
                 print(" L'adversaire saute ton tour ! Il rejoue encore.")
                 ordinateur ()
                 return;
 
 
             elif carte_jouee_ordi [1]==talon[-1][1] or carte_jouee_ordi[0]==talon[-1][0]:  
                 u=images_cartes_joueur_2.pop()
                 table_jeu.delete(u)
                 carte_joueur_2.remove(carte_jouee_ordi)  
                 talon.append(carte_jouee_ordi)         
                 table_jeu.create_image(z, 300, image=images_cartes[carte_jouee_ordi], tags="carte_talon")
                 print("L'adversaire a joué un  :" ,talon [-1]) 
                 return;
    pioche_ordi = cartes.pop()  
    print("L'adversaire pioche un :  ", pioche_ordi)      
    if pioche_ordi [0] == talon[-1][0] or pioche_ordi [1] == talon[-1][1] or pioche_ordi=="+4" or pioche_ordi[1] == talon[-1][0] or pioche_ordi[0] == talon[-1][1] or pioche_ordi=="4c":  
        print ("L'adversaire peut jouer la carte piochée") 
        carte_joueur_2.append (pioche_ordi)
        ordinateur ()
 
    else :  
        n=len (carte_joueur_2)
        carte_joueur_2.append (pioche_ordi ) 
        o= (n*CHEVAUCHEMENT_CARTE)+ 200
        image_p=table_jeu.create_image(o, 150, image=carte_dos, tags="carte_joueur_2")
        images_cartes_joueur_1.append(image_p)
        o += CHEVAUCHEMENT_CARTE
        table_jeu.update()
 
    return;
 
def jeu():
    table_jeu.unbind_all
    valeur, couleur = talon[-1][0], talon[-1][1]  
    cartes_jouables =[]
    for carte in carte_joueur_1:  
        if carte[0] == valeur or carte[1] == couleur or carte=="+4" or carte=="4c": 
            cartes_jouables.append (carte)
    if len (cartes_jouables) != 0:  #au moins une carte jouable
        table_jeu.tag_bind("carte_joueur_1", "<Button-1>", jouer_carte)
    else: #il n'a plus de cartes jouables (pioche)
        bou1.config (state = tkinter.NORMAL)
        time.sleep(2)
        ordinateur ()
        #il ne se passe rien parce que normalement ca doit faire une boucle et revenir au debut de la fonction jeu()
#--------------------PROGRAMME--------------------------------------------------------------
 
#INTERFACE GRAPHIQUE
 
LARGEUR_TABLE = 1500 
HAUTEUR_TABLE = 700  
 
uno= tk.Tk()
# Distribution des cartes 
images_cartes,joker,cartes,carte_joueur_1,carte_joueur_2,talon = initialisation()  
# Largeur et hauteur des cartes (on prend en base celles de la 1ère carte) 
LARGEUR_CARTE = images_cartes[cartes[0]].width()  #comment reduire la taille des cartes ?
HAUTEUR_CARTE = images_cartes[cartes[0]].height() 
# Chevauchement des cartes du joueur sur la table
CHEVAUCHEMENT_CARTE = int(LARGEUR_CARTE / 2)
# Décalage vers le haut lorsqu'une carte est cliquée
DECALAGE_SELECTION_CARTE = int(HAUTEUR_CARTE / 3)
 
table_jeu = tk.Canvas(uno, width=LARGEUR_TABLE, height=HAUTEUR_TABLE, bg="green")
table_jeu.grid()
 
 
 
# Création sur la table de l'image de la pioche (bouton)
image_pioche = tk.PhotoImage(file='imagecarte/dos.png')
bou1 = tk.Button(uno, text='Pioche',image=image_pioche, command = pioche)
bou1.place(x=1200, y=300)
bou1.config (state = tkinter.DISABLED)
 
 
 
# coordonnée sur la table de jeu du talon
COORD_TALON = (
    int(LARGEUR_TABLE / 2 + LARGEUR_CARTE + 50),
    300,
)
# Création sur la table de l'image du talon
z=LARGEUR_TABLE / 2 + LARGEUR_CARTE + 50
image_talon = []
for carte in talon :    #comment faire pour que ca affiche que la derniere valeur du talon ?
    image_id = table_jeu.create_image(z, 300, image=images_cartes[carte], tags="carte_talon")
    image_talon.append(image_id)
 
 
# Création sur la table des images des cartes du joueur1.
x=200
images_cartes_joueur_1 = []
for carte in carte_joueur_1:
    image_id = table_jeu.create_image(x, 550, image=images_cartes[carte], tags="carte_joueur_1")
    images_cartes_joueur_1.append(image_id)
    x += CHEVAUCHEMENT_CARTE
 
 # Création sur la table des images des l'ordi.
w = 200
carte_dos = tk.PhotoImage(file='imagecarte/dos.png')
images_cartes_joueur_2 = []
for i in range (len(carte_joueur_2)):
    image_id = table_jeu.create_image(w, 150, image=carte_dos, tags="carte_joueur_2")
    images_cartes_joueur_2.append(image_id)
    w += CHEVAUCHEMENT_CARTE
 
image_talon = None
selection_carte = None 
 
uno.after_idle(jeu)
uno.mainloop()