[Tkinter] jeu binero
Résolu
xenact_
Messages postés
4
Statut
Membre
-
xenact_ Messages postés 4 Statut Membre -
xenact_ Messages postés 4 Statut Membre -
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.
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. |
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. -
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.
-
Du coup c'est bon j'ai réussi a corriger seul mon problème merci quand même.