Bonjour, des amis et moi nous sommes lancés dans la réalisation d'un Puissance 4 cependant nous avons un problème pour mettre en place l'interface graphique. La grille du P4 s'affiche correctement cependant il ne se passe rien quand on clique sur une case. Alors je voudrais bien savoir d'où vient ce problème et comment y remédier sachant que notre niveau de programmation est débutant. J'ai réduit le programme pour que deux joueurs puissent jouer :

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
from tkinter import*
fenetre = Tk()
import random
 
#######FONCTIONS###########
 
def choix_adv ():
    """permet de choisir contre qui le joueur veut jouer ainsi que les niveaux de difficulté (contre l'ordinateur)"""
    adv=int(input("Contre qui souhaitez-vous jouer : l'ordinateur ? (tapez 1) un autre joueur ? (tapez 2) "))
    if adv != 1 and adv != 2 :
        print("Veuillez choisir un nombre entre 1 et 2 !")
        choix_adv()
 
 
 
    if adv==2:
        joueur()
 
 
def joueur() :
    """tant que la partie n'est pas gagnée, permet de changer de joueur"""
    p = 1
    gagne = False
    while not(gagne):
        jouer(p)
        gagne = verif (p)
        p = 3 - p
 
 
def jouer(p):
    global j,i
    """demande au joueur de jouer dans quelle colonne il veut jouer + si coup impossible, fait rejouer le joueur"""
    print ("C'est au joueur",p,"de jouer :")
    j = int(input("Joueur "+str(p)+", dans quelle colonne voulez-vous jouer ? "))
 
    if j>6 or j<0 :
        print ("Impossible, veuillez choisir une colonne entre 0 et 6 !")
        return jouer(p)
    if grille[0][j]!= 0:
            print ("Impossible, veuillez jouer dans une autre colonne !")
            return jouer(p)
 
    i=0
    while i<6 and grille[i][j] == 0:
        i = i+1
    grille[i-1][j] = p
    return afficher_grille()
 
 
def afficher_grille():
    """afficher la grille"""
    for ligne in grille:
        print(ligne)
 
grille = [[0 for j in range(7)] for i in range(6)]
 
 
def verif_hori (p):
    """Vérifie si il y a 4 pièces alignés horizontalement"""
    for i in range (6):
        for j in range (4):
            if grille[i][j]==grille[i][j+1]==grille[i][j+2]==grille[i][j+3]==p:
                return True
    return False
 
 
def verif_verti(p):
    """Vérifie si il y a 4 pièces alignés verticalement"""
    for i in range (3):
        for j in range (7):
            if grille[i][j]==p and grille[i+1][j]==p and grille[i+2][j]==p and grille[i+3][j]==p:
                return True
 
    return False
 
 
 
def verif_diago (p):
    """Vérifie si il y a 4 pièces alignés diagonalement"""
    for i in range (3):
        for j in range (4):
            if grille[i][j]==grille[i+1][j+1]==grille[i+2][j+2]==grille[i+3][j+3]==p:
                return True
    for i in range (3):
        for j in range (3,7):
            if grille[i][j]==grille[i+1][j-1]==grille[i+2][j-2]==grille[i+3][j-3]==p:
                return True
    return False
 
 
 
 
 
def verif (p):
    """Si une vérif est OK alors on affiche le joueur qui a gagné"""
    gagne = False
 
    if verif_hori(p)== True :
        print("Le joueur", p,"a gagné !")
        gagne = True
 
 
    elif verif_verti(p)== True :
        print("Le joueur", p,"a gagné !")
        gagne = True
 
 
    elif verif_diago(p)== True :
        print("Le joueur", p,"a gagné !")
        gagne = True
 
    return gagne
 
 
 
#creation du canevas :
canevas=Canvas(fenetre)
canevas.configure(width=700,height=600,bg='#0048B5')
canevas.grid(row = 1,column = 1,padx = 20,pady = 20)
#cercle
 
for j in range(7):
    for i in range(6):
        canevas.create_oval(100*j+50-45,100*i+50-45,100*j+50+45,100*i+50+45,width=5,fill='white',outline='#018CD2')
 
def case (x):
    if 0<=x<=100:
        return 0
    if 100<=x<=200:
        return 1
    if 200<=x<=300:
        return 2
    if 300<=x<=400:
        return 3
    if 400<=x<=500:
        return 4
    if 500<=x<=600:
        return 5
    if 600<=x<=700:
        return 6
 
p = 1
 
 
def clic(event):
    global joueur,canevas,j,p
    i = event.x
    j = case(x)
    jouer(p)
    p=3-p
 
 
    if p==1:
        for j in range(7):
            for i in range(6):
                canevas.create_oval(100*j+50-45,100*x+50-45,100*j+50+45,100*x+50+45,width=5,fill='yellow',outline='#018CD2')
    else:
        for j in range(7):
            for i in range(6):
                canevas.create_oval(100*j+50-45,100*x+50-45,100*j+50+45,100*x+50+45,width=5,fill='red',outline='#018CD2')
 
 
 
 
fenetre.mainloop()
#-------------------CORPS DU PROGRAMME----------------------
 
choix_adv()
(en fermant la grille du p4, vous pouvez jouer sur le shell)
Merci d'avance !