Bonjour, j'aurais besoin de conseil et d'aide pour continuer mon projet. J'ai un code qui marche bien mais je veux que l'utilisateur rentre ces paramétres avant le début du jeu. Donc je veux qu'une fenêtre apparaisse au début avec pour commencer juste un bouton "jouer" qui lancera le jeu. Je mets mon code.
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
# -*- coding: cp1252 -*-
# ==============================================================================
# Slidings rows : jeu de puissance 4 améliorer 
# ==============================================================================
"""Slidings Rows """
__author__  = 
__version__ = "1.0"
__date__    = "14/05/2010"
# ------------------------------------------------------------------------------
from Tkinter import *
 
 
class TextGrid(Frame):
  """grille rectangulaire de widget avec la possibilité d'ajouter un texte"""
 
  config = {'border':1, 'widget':Label, 'text':'' , 'size':(2,2), 'command':''}
 
  def __init__(self, master, **keys):
    """initialise la grille de widget"""
    for key in self.config:
      if key not in keys: keys[key] = self.config[key]
    self.grid, self.size, self.init = {}, keys['size'], keys['text']
    widget, command, (cols,rows) = keys['widget'], keys['command'], keys['size']
    del keys['widget'], keys['command'], keys['size']
    Frame.__init__(self, master, border=keys['border'], relief=SOLID) 
    for col in range(cols):
      for row in range(rows):
        if command:
            keys['command'] = lambda cell=(col,row): command(cell)
        self.grid[col,row] = widget(self, keys) 
        self.grid[col,row].grid(column=col, row=row, sticky=N+S+W+E)
    for n in range(cols): self.columnconfigure(n, weight=1)
    for n in range(rows): self.rowconfigure(n, weight=1)
 
 
  def __getitem__(self, key):
    if isinstance(key, str): 
      return Frame.__getitem__(self, key)
    col, row = key[:2]; prop = key[2] if len(key) == 3 else 'text'
    return self.grid[col,row][prop] 
 
 
  def __setitem__(self, key, val):
    if isinstance(key, str):
      Frame.__setitem__(self, key, val); return
    col, row = key[:2]; prop = key[2] if len(key) == 3 else 'text'
    self.grid[col,row][prop] = val
 
 
class Initiation(Tk):
 """initialise le jeu"""
 
 def __init__(self,parent):
      """initialise les différentes variables et crée les widgets"""
      Tk.__init__(self,parent)
      self.parent = parent
      self.size, self.fnt = (7,7), "Arial 14" #initialise les variables de taille et d'écriture
      self.colors = ('RED','RED','RED','RED','RED','RED','RED') #texte pour initialiser gridB
      self.color1 = 'RED' #définie une couleur associée à un joueur
      self.color2 = 'BLUE'
      self.joueur1 = 0 #initialise le nombre de combinaisons gagnantes à 0
      self.joueur2 = 0
 
      self.gridB = TextGrid(self, widget=Button, size=(7,1), font=self.fnt, width=9,
              command=Calcul().paint)                                          # création des boutons permettant de commander où         
      for p, color in enumerate(self.colors):                                  # placer une pièce et quelle couleur doit jouer  
          self.gridB[p,0] = 'RED'
          self.gridB[p,0,'bg'] = 'GREY'
      self.gridB.pack(side=TOP, fill=BOTH, padx=5, pady=5)  
 
      self.gridA = TextGrid(self, size=self.size, font=self.fnt, width=4, height=2, relief=SOLID) # création de la grille de jeu
      for p in range(7):                                                                          # cette grille est de taille 7x7  
          for k in range(7):                                                                      # comme le puissance 4 "classique"   
              self.gridA[p,k,'bg'] = 'GREY'
      self.gridA.pack(side=TOP, fill=BOTH, expand=YES, padx=5, pady=5)
 
 
class Calcul():
    """'coeur' du jeu où sont disposées les méthodes permettant le bon fonctionnement"""
 
    def paint(self, button):
        """vérifie si le joueur peut jouer dans une colonne"""
        temp,root.temp_gridB=[],[]                         #initialise des listes 
        val = button[0] 
        if root.gridB[val,0] == 'Stop':             #si sur le bouton de gridB il est écrit 'Stop', on ne peut pas jouer dans cette colonne 
            p = [7] 
        for v in range(7):
            if root.gridB[v,0] != 'Stop':           #si on peut jouer ( bouton différent de 'Stop')
                root.temp_gridB.append(root.gridB[v,0])    #on enregistre la couleur courante ds temp_gridB
        if len(root.temp_gridB) != 0:               #cette condition permet de jouer si toutes les boutons de gridB n'affiche pas 'Stop'
          self.color = root.temp_gridB[0]           #on définit la couleur courante permettant de connaitre la couleur pour toutes les méthodes
          if len(temp) == 0:
              if root.temp_gridB[0] == root.color1:          #on définit le joueur courant permettant de connaitre le joueur pour toutes les méthodes
                  self.joueur=root.joueur1
              else:
                  self.joueur=root.joueur2
              self.remplir(button)                    #on appelle les méthodes remplir et gagner
              self.gagner(button)
 
    def remplir(self, button):        
        """place une pièce dans la grille de jeu en respectant la gravité"""
        val = button[0]
        k = 6
        while k:
            if root.gridA[val,k,'bg'] == 'GREY':     #on vérifie si on peut placer une pièce dans une colonne 
                root.gridA[val,k,'bg'] = self.color  #et si on peut, on l'ajoute avec la couleur courante
                self.change()
                break
            else:
                k -= 1
            if (k == 0) and (root.gridA[val,k,'bg'] == 'GREY'):
                root.gridA[val,k,'bg'] = self.color  #si la pièce ajoutée est la dernière de la colonne 
                root.gridB[val,0,'bg'] = 'yellow'    #alors on bloque la colonne pour la suite du jeu
                root.gridB[val,0] = 'Stop'           #en la colorant en jaune et en écrivant 'Stop' 
                self.change()                        #et on change de joueur
 
    def change(self):
        """permet de passer d'un joueur à l'autre après une action de jeu"""
        if root.temp_gridB[0] == root.color1:               #on regarde la couleur courante et 
            self.color='BLUE'                        #on la change pour le joueur suivant
        else:
            self.color='RED'
        cols, rows = root.size
        for p in range(rows):                        #on applique le changement sur gridB 
            if root.gridB[p,0] != 'Stop':            #en modifiant le texte des boutons 
                root.gridB[p,0] = self.color         #mais on vérifie avant que les boutons ne soient pas des 'Stop'
 
 
 
# ==============================================================================
if __name__ == "__main__":                                  #on crée notre root
 
 
    root=Initiation(None)
    root.withdraw()
    root.title("Sliding Rows")
    root.minsize(root.winfo_width(), root.winfo_height())
    root.resizable(1,1)
    root.deiconify()
    root.mainloop()
J'ai essayé plein de trucs mais je n'y arrive pas du tout. Je suis sur que c'est pas compliqué mais je débute donc je bloque sur des détails.