[Tkinter] jeu binero

Résolu/Fermé
xenact_ Messages postés 2 Date d'inscription lundi 30 avril 2018 Statut Membre Dernière intervention 1 mai 2018 - Modifié le 30 avril 2018 à 21:39
xenact_ Messages postés 2 Date d'inscription lundi 30 avril 2018 Statut Membre Dernière intervention 1 mai 2018 - 1 mai 2018 à 22:29
Bonjour,

Bonjour,


J'aurais besoin de votre aide pour mon projet d'isn. Il s'agit de coder un Binero. Il est quasiment fini à part la création des menus mais je n'arrive pas a exécuter certaines lignes de code et je ne comprend pas pourquoi. Il s'agit du dernier elif de la fonction remplacer_et_afficher(Clic). J'espère que mon code n'est pas trop brouillon et que vous arriverez a le relire.


Mes plus sincères salutations.


from random import choice
import tkinter

class variable() :
 def __init__(self):
  self.pas = 500/4
  self.marge = 100
  self.grille_choisi = []
  self.grille_verif = []
  self.fini = 0

  
var = variable()

#grille 1
a1 = [2,2,3,3] # 1 = croix; 2 = rond; 3 = croix non modifiable; 4 = rond non modifiable
b1 = [4,1,2,1]
c1 = [1,1,2,2]
d1 = [1,2,3,2]
grille1_verif = [a1,b1,c1,d1]

#grille 1 servant à la vérification
a_1 = [0,0,3,3] # 1 = croix; 2 = rond; 3 = croix non modifiable; 4 = rond non modifiable
b_1 = [4,0,0,0]
c_1 = [0,0,0,0]
d_1 = [0,0,3,0]
grille1 = [a_1,b_1,c_1,d_1] 



#grille 2
a2 = [4,2,1,1] # 1 = croix; 2 = rond; 3 = croix non modifiable; 4 = rond non modifiable
b2 = [1,2,1,2]
c2 = [1,3,2,2]
d2 = [4,1,4,1]
grille2_verif = [a2,b2,c2,d2]

#grille 2 servant à la vérification
a_2 = [4,0,0,0] # 1 = croix; 2 = rond; 3 = croix non modifiable; 4 = rond non modifiable
b_2 = [0,0,0,0]
c_2 = [0,3,0,0]
d_2 = [4,0,4,0]
grille2 = [a_2,b_2,c_2,d_2]



#associe la grille affiher au départ avec celle utile à la vérification
liste_grille1 = [grille1, grille1_verif]
liste_grille2 = [grille2, grille2_verif]

#liste contenant toutes les grilles
liste_grille = [liste_grille1, liste_grille2]



def afficher_tableau() :
 '''
 fonction qui créé la fenêtre et la grille de jeu 4*4
 '''
 global fen
 global can
 fen = tkinter.Tk()
 can = tkinter.Canvas(fen, width = 1000, height = 1000, bg = 'white')
 can.grid(row=0, column = 0)
 t = 0
 while t <= 4 :
  can.create_line(var.marge, var.marge + var.pas * t, var.marge + 500, var.marge + var.pas * t, fill = 'black')
  can.create_line(var.marge + var.pas * t, var.marge, var.marge + var.pas * t, var.marge + 500, fill = 'black')
  t += 1
 
 for ligne in range (0,4) :
  for colonne in range (0,4) :
   if var.grille_choisi[ligne][colonne] == 3 :
    can.create_line(var.marge + colonne * var.pas + 10, var.marge + ligne * var.pas + 10, var.marge + (colonne+1) * var.pas - 10, var.marge + (ligne+1) * var.pas - 10, width = 6, fill = "black")
    can.create_line(var.marge + (colonne+1) * var.pas - 10, var.marge + ligne * var.pas + 10, var.marge + colonne * var.pas + 10, var.marge + (ligne+1) * var.pas - 10, width = 6, fill = "black")
   elif var.grille_choisi[ligne][colonne] == 4 :
    can.create_oval(var.marge + colonne * var.pas + 10, var.marge + ligne * var.pas + 10, var.marge + (colonne+1) * var.pas - 10, var.marge + (ligne+1) * var.pas - 10, width = 8, fill = "white", outline = "black")
 
 can.pack()
 debut()
 fen.mainloop()
 
 

 

 
def grille_alea(liste_grille):
 '''
 fonction qui choisit une grille aléatoirement parmi la celle contenue dans la liste de grille
 '''
 var.grille_choisi = choice(liste_grille)
 var.grille_verif = var.grille_choisi[1]
 var.grille_choisi = var.grille_choisi[0]
 
 
 

def remplacer_et_afficher(Clic) :
 '''
 fonction qui créé et supprime les cercle et croix placé dans la grille
 '''
 for ligne in range (0,4):   #on parcourt chaque ligne
  for colonne in range (0,4) :  #puis chaque colonne
   #on test si le dans quel case le clic est éffectuer
   if Clic.x > var.marge + colonne * var.pas and Clic.x < var.marge + (colonne+1) * var.pas and Clic.y > var.marge + ligne * var.pas and Clic.y < var.marge + (ligne+1) * var.pas :
    #on créé une croix, un rond dans la case, ou on efface la case en fonction de l'objet dans la case
    if var.grille_choisi[ligne][colonne] == 0 :
     var.grille_choisi[ligne][colonne] = 1
     can.create_line(var.marge + colonne * var.pas + 10, var.marge + ligne * var.pas + 10, var.marge + (colonne+1) * var.pas - 10, var.marge + (ligne+1) * var.pas - 10, width = 6, fill = "blue")
     can.create_line(var.marge + (colonne+1) * var.pas - 10, var.marge + ligne * var.pas + 10, var.marge + colonne * var.pas + 10, var.marge + (ligne+1) * var.pas - 10, width = 6, fill = "blue")
    elif var.grille_choisi[ligne][colonne] == 1 :
     var.grille_choisi[ligne][colonne] = 2
     var.grille_choisi[ligne][colonne] = can.create_rectangle(var.marge + colonne * var.pas + 5, var.marge + ligne * var.pas + 5, var.marge + (colonne+1) * var.pas - 5, var.marge + (ligne+1) * var.pas - 5, width = 1, fill = "white", outline = "white")
     var.grille_choisi[ligne][colonne] = can.create_oval(var.marge + colonne * var.pas + 10, var.marge + ligne * var.pas + 10, var.marge + (colonne+1) * var.pas - 10, var.marge + (ligne+1) * var.pas - 10, width = 8, fill = "white", outline = "red")
    elif var.grille_choisi[ligne][colonne] == 2 :
     var.grille_choisi[ligne][colonne] = 0
     var.grille_choisi[ligne][colonne] = can.create_rectangle(var.marge + colonne * var.pas + 5, var.marge + ligne * var.pas + 5, var.marge + (colonne+1) * var.pas - 5, var.marge + (ligne+1) * var.pas - 5, width = 1, fill = "white", outline = "white")
     
     
     
def verification() :
 '''
 fonction qui vérifie si l'utilisateur a correctement rempli la grille
 '''
 if var.grille_choisi == var.grille_verif :
  var.fini = 1

def debut():
 can.bind_all('<Button-1>', remplacer_et_afficher)

grille_alea(liste_grille)
afficher_tableau()



EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

3 réponses

Bonsoir.

En python, un code non indenté est incompréhensible, c'est pour cette raison que les forums fournissent des outils de mises en forme du code, ici, c'est le bouton <>.

Donc, si tu pouvais éditer ton message afin d'utiliser cette fonctionnalité, tu aurais bien plus de chances d'intéresser quiconque à essayer de t'aider.
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
30 avril 2018 à 21:47
Bonsoir, un autre truc important avec les forums, ceux qui répondent sont bénévoles.
Par définition, leur urgence n'est pas de répondre à une question.
Le fait d'indiquer que c'est urgent pour toi est plutôt néfaste pour toi.
Beaucoup se disent,
encore un qui fait son devoir/travail au dernier moment, qui a séché les cours, etc... et qui veut qu'on lui sauve ses miches.
et ne lisent même pas ton message.
0
xenact_ Messages postés 2 Date d'inscription lundi 30 avril 2018 Statut Membre Dernière intervention 1 mai 2018
1 mai 2018 à 22:29
Du coup c'est bon j'ai réussi a corriger seul mon problème merci quand même.
0