Bonsoir,

Je suis nouveau sur le site et j'ai vraiment besoin d'aide, c'est très urgent. Alors voila, je suis actuellement en Terminales S et je suis la spécialité Informatique et Sciences du Numérique. Je dois rendre pour la semaine prochaine ( lundi ) mon projet qui consiste à créer le jeu du morpion. J'ai déjà bien avancé, il est presque fini mais j'ai besoin d'aide pour pouvoir le finaliser. En effet, il lui manque quelques petites trucs tels qu'un menu qui se composerait d'un bouton "recommencer", "quitter", tel que la possibilité de choisir les ronds ou les croix, ou encore afficher " le joueur a gagné, perdu, match nul" sur la même fenêtre, etc.Je bloque totalement pour rajouter à mon programme ces genres de choses, il me trouve toujours une erreur quelque part ..
Je vous laisse donc regarder mon programme ci-dessous et si vous pouviez y apporter quelques changements qui permettraient de le finaliser, ce serait vraiment super !
Je le répète, j'ai vraiment besoin d'aide et je pense pas pouvoir y arriver seul ..
Merci d'avance



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
from tkinter import *
 
 
 
class Application(object) :     # cree la fenêtre et les graphismes
 
    def __init__(self) :        # initialise le jeu
        self.root = Tk()        # ouvre une fenetre
        self.root.title("Jeu du Morpion")       # titre de la fenetre
        self.tour = 1
        self.can = Canvas(self.root, width=300, height=300, bg="ivory")     # cree un canvas blanc ( espace graphique )
        self.can.pack()
        self.can.bind("<Button-1>", self.oriente)       # definit l'action du fait d'utiliser le click gauche de la souris dans le canvas
 
        self.grille = Grille(self.can)      # cree une grille 3X3 occupant tout l'espace du canvas ( voir fonction grille )
 
 
        self.root.mainloop()
 
 
 
    def oriente(self, event) :      # fonction qui permet l'alternation des joueurs et la determination du vainqueur
        if self.tour == 1 :         # alternation des joueurs
            self.tour = 2
        elif self.tour == 2 :
            self.tour = 1
        self.x, self.y = event.x, event.y
        if not self.grille.coord_to_case(self.x//100, self.y//100):     # si case vide
            if self.tour == 1 :     # joueur 1 (croix)
                self.grille.croix((self.x//100)*100, (self.y//100)*100)
                self.grille.grille_num[self.grille.index] = 1
            else :      # joueur 2 (rond)
                self.grille.rond((self.x//100)*100, (self.y//100)*100)
                self.grille.grille_num[self.grille.index] = 2
            gagnant = self.grille.verif()       # determine le gagnant ( 3 croix/ronds alignes )
            if gagnant : # si il y a un gagnant
                print("joueur", gagnant, "a gagne")
 
class Grille(object) :
    "Gere la grille"
    def __init__(self, can) :       # initialise la grille en memoire et la trace dans le canvas
        self.grille_num = [0, 0, 0,
                           0, 0, 0,
                           0, 0, 0]
        self.can = can
        self.can.create_line(100,0,100,300) # cree la premiere ligne verticale 
        self.can.create_line(200,0,200,300) # cree la deuxieme ligne verticale 
        self.can.create_line(0,100,300,100) # cree la premiere ligne horizontale 
        self.can.create_line(0,200,300,200) # cree la deuxieme ligne horizontale 
 
 
    def recommencer(self):      # fonction qui permet de reinitialiser le jeu 
        self.can.delete(ALL)    # supprime l'integralite du contenu present dans le canvas
        self.Application()      # retour a l'initialisation du jeu ( voir class application )
 
    def croix(self, x, y) :     # fonction qui permet de tracer une croix dans le canvas
        self.can.create_line(x+20, y+20, x+80, y+80, fill="blue", width=5)  # cree deux lignes en diagonales formant une croix de couleur bleu
        self.can.create_line(x+80, y+20, x+20, y+80, fill="blue", width=5)
 
    def rond(self, x, y) :      # fonction qui permet de tracer un rond dans le canvas
        self.can.create_oval(x+20, y+20, x+80, y+80, outline="red", width=5)    # cree un rond de couleur rouge
 
 
    def coord_to_case(self, x, y) :     # converti des coordonnées ( de position ) en numero de case
        # [0, 1, 2]
        # [3, 4, 5]
        # [6, 7, 8]
        if x == 0 :
            if y == 0 : # case 0
                self.index = 0
                return self.grille_num[self.index]
            if y == 1 : # case 3
                self.index = 3
                return self.grille_num[self.index]
            if y == 2 : # case 6
                self.index = 6
                return self.grille_num[self.index]
        elif x == 1 :
            if y == 0 : # case 1
                self.index = 1
                return self.grille_num[self.index]
            if y == 1 : # case 4
                self.index = 4
                return self.grille_num[self.index]
            if y == 2 : # case 7
                self.index = 7
                return self.grille_num[self.index]
        elif x == 2 :
            if y == 0 : # case 2
                self.index = 2
                return self.grille_num[self.index]
            if y == 1 : # case 5
                self.index = 5
                return self.grille_num[self.index]
            if y == 2 : # case 8
                self.index = 8
                return self.grille_num[self.index]
 
 
 
 
    def verif(self) :
        i = 0
        while i <= 6 : # verif horizontale
            print(self.grille_num,i)
            if self.grille_num[i] == self.grille_num[i+1] and\
               self.grille_num[i+1] == self.grille_num[i+2] :
                return self.grille_num[i] # renvoie le num du gagnant
            i = i + 3
 
        i = 0
        while i < 3 : # verif verticale
            if self.grille_num[i] == self.grille_num[i+3] and \
               self.grille_num[i+3] == self.grille_num[i+6] :
                return self.grille_num[i] # renvoie le num gagnant
            i += 1
 
        # verif diagonale :
        if self.grille_num[0] == self.grille_num[4] and \
               self.grille_num[4] == self.grille_num[8] :
            return self.grille_num[0]
        elif self.grille_num[2] == self.grille_num[4] and \
               self.grille_num[4] == self.grille_num[6] :
            return self.grille_num[2]
 
        return False # pas trouve de gagnant
 
 
 
 
 
 
jeu = Application()