Variable globale Tkinter

yassi42 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
yassi42 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir,
J'essaie de créer un programme pour jouer au jeu de "papier caillou ciseaux" avec une interface graphique (tkinter) mais je suis face a un problème qu je n'arrive pas a résoudre depuis un bon moment:
Je souhaiterai faire afficher le cumul des points (sur PLUSIEURS JEUX) du joueur et du PC dans la fenêtre tkinter mais impossible j'ai essayé avec des variables globales mais ça ne marche pas. j'espère que quelqu'un voit ou es que je me trompe :-)
Merci
import random
from tkinter import*
 
 
def jeu(joueur1):
    global pointjoueur
    global pointPC
    pointPC=0
    pointjoueur=0
 
 
    PC=random.randint(1,3)
    PC=int(PC)
 
    if (joueur1==1) :
            if (PC==1) :
                print("égalité")
            elif (PC==2) :
                print("Vous gagnez")
                pointjoueur=pointjoueur+1
            else:
                 print("Vous perdez")
                 pointPC=pointPC+1
 
    elif (joueur1==2) :
            if PC==2 :
                print("égalité")
            elif PC==3 :
                print("Vous gagnez")
                pointjoueur=pointjoueur+1
            else:
                 print("Vous perdez")
                 pointPC=pointPC+1
 
    else:
            if PC==3 :
                print("égalité")
            elif PC==2 :
                print("Vous gagnez")
                pointjoueur=pointjoueur+1
            else:
                 print("Vous perdez")
                 pointPC=pointPC+1
 
    print('Vos points:',pointjoueur)
    print('points du PC:',pointPC)
    print()
 
 
fen1= Tk()
fen1.title('Papier Caillou Ciseaux')
 
tex1=Label(fen1, text='Choisissez votre action !')
tex1.pack()
bout1=Button(fen1, text='papier', command=(lambda:jeu(1)))
bout1.pack()
bout2=Button(fen1, text='cailloux', command=(lambda:jeu(2)))
bout2.pack()
bout3=Button(fen1, text='ciseau', command=(lambda:jeu(3)))
bout3.pack()
bout4 = Button(fen1, text="Quitter", command =fen1.destroy)
bout4.pack()
chaine = Label(fen1)
chaine.pack()
tex2 = Label(fen1, text=pointjoueur)
tex2.pack()
tex4 = Label(fen1, text=pointPC)
tex4.pack()
 
fen1.config(background=('#336633'))
fen1.geometry('200x200')
 
fen1.mainloop()

2 réponses

nidhogg-59 Messages postés 102 Date d'inscription   Statut Membre Dernière intervention   28
 
Bonjour!
Pour qu'une variable soit globale à tout le programme, il faut la déclarer dans le corps du programme et non dans une fonction.
Ça ferait quelque chose comme ça (en supposant que pointPC soit ta variable) :
pointPC=0
def jeu(joueur1):
    global pointPC
    # et ici, tu n'initialises pas ta variable pointPC à 0

Voilà! Mais n'oublie pas que les variables globales ne sont pas toujours le meilleur moyen de résoudre ce genre de problème. Les classes peuvent palier ce genre de problème! =)
ps: par contre, j'ai pas pu tester, car j'ai pas tkinter sous la main...
Edit: j'ai testé sans tkinter, et ça semble fonctionner...
2
yassi42 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de votre réponse mais entre temp j'ai réussi à le faire marcher en utilisant des dictionnaires.
Merci
0