Variable globale Tkinter [Fermé]

Messages postés
5
Date d'inscription
mercredi 15 janvier 2014
Statut
Membre
Dernière intervention
4 mars 2014
- - Dernière réponse : yassi42
Messages postés
5
Date d'inscription
mercredi 15 janvier 2014
Statut
Membre
Dernière intervention
4 mars 2014
- 18 janv. 2014 à 12:43
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()
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
103
Date d'inscription
mercredi 20 juin 2012
Statut
Membre
Dernière intervention
5 décembre 2015
15
2
Merci
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...

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 71129 internautes nous ont dit merci ce mois-ci

Messages postés
5
Date d'inscription
mercredi 15 janvier 2014
Statut
Membre
Dernière intervention
4 mars 2014
0
Merci
Merci de votre réponse mais entre temp j'ai réussi à le faire marcher en utilisant des dictionnaires.
Merci