Tkinter - Fonction "rejouer" inactive - Jeu shifumi

Résolu/Fermé
plijyf2 - Modifié le 7 janv. 2022 à 22:35
 Kriss0312 - 13 mai 2022 à 17:51
Bonsoir,
J'ai mis un bouton "rejouer" afin de relancer le programme du jeu.
Mais bien que la fonction soit inscrite, rien ne se passe.

Voici mon code,
Merci de votre aide.


from random import randint
from tkinter import *


# variables globales
score_ordinateur = 0
score_joueur = 0

def score(joueur,ordinateur):
    global score_joueur, score_ordinateur
    if joueur == 1  and ordinateur == 1 :
        score_ordinateur += 0
        score_joueur += 0
    elif joueur == 1  and ordinateur == 2:
        score_ordinateur+= 1
    elif joueur == 1  and ordinateur == 3:
        score_joueur += 1

    elif joueur == 2 and ordinateur == 1:
        score_joueur += 1
    elif joueur == 2 and ordinateur == 2:
        score_ordinateur += 0
        score_joueur += 0
    elif joueur == 2 and ordinateur == 3:
        score_ordinateur += 1

    elif joueur == 3 and ordinateur == 1:
        score_ordinateur += 1
    elif joueur == 3 and ordinateur == 2:
        score_joueur += 1
    elif joueur == 3 and ordinateur == 3:
        score_ordinateur += 0
        score_joueur += 0


def jouer(ordinateur):
    global score_joueur, score_ordinateur, score1, score2
    joueur = randint(1,3)
    if joueur==1:
        lab2.configure(text="Papier")
    elif joueur==2:
        lab2.configure(text="Ciseaux")
    else:
        lab2.configure(text="Pierre")
    score(joueur,ordinateur)
    score1.configure(text=str(score_ordinateur))
    score2.configure(text=str(score_joueur))


def jouer_papier():
    jouer(1)
    lab1.configure(text="Papier")
def jouer_ciseaux():
    jouer(2)
    lab1.configure(text="Ciseaux")
def jouer_pierre():
    jouer(3)
    lab1.configure(text="Pierre")


def reinit():
    global score_joueur,score_ordinateur,score1,score2,lab1,lab2
    score_ordinateur = 0
    score_joueur = 0
    score1.configure(text="0")
    score2.configure(text="0")
    lab1.configure(text="")
    lab2.configure(text="")


#######Création de la fênetre tkinter ##############


fenetre = Tk()
fenetre.config(bg = "#8e2711")
fenetre.geometry("700x750")
barre = Canvas(fenetre, width = 630, height = 70, bg = "#8e2711",borderwidth=0,)
barre.pack(side="top")
barre.create_text(320,40, text="Bienvenue dans le jeu Shifumi ! ", font=("Segoe Script", "25","bold"), fill= "#FFFACD")



################ Création des widgets#####################




bouton1 = Button(fenetre, text="Papier",width = 6, height =1,fg= "#800000",bg="#F0E68C",font=("Segoe Script", "20","bold"),command=jouer_papier)
bouton1.configure(text="Papier")
bouton1.place(x=300,y= 150)


bouton2 = Button(fenetre, text="Ciseaux",width = 6, height =1,fg= "#800000",bg="#9ACD32",font=("Segoe Script", "20","bold"),command=jouer_ciseaux)
bouton2.configure(text="Ciseaux")
bouton2.place(x=40,y= 550)



bouton3 = Button(fenetre, text="Pierre",width = 6, height =1,fg= "#800000",bg="#FFA500",font=("Segoe Script", "20","bold"),command=jouer_pierre)
bouton3.configure(text="Pierre")
bouton3.place(x=540,y= 550)



bouton4 = Button(fenetre, text="Rejouer",width = 20, height =2,font=("arial", "10","bold"),command="reinit")
bouton4.place(x=120, y=700)

bouton5 = Button(fenetre, text="Quitter", width = 20, height =2,fg= "#ffffff",bg="black",font=("arial", "10","bold"),command=fenetre.destroy)
bouton5.place(x=440, y=700)





texte1 = Label(fenetre, text="Ordinateur", font=("Helvetica", 18,"bold"),bg= "#8e2711",fg="#FFFACD")
texte1.place(x=220,y=300)

texte2 = Label(fenetre, text="Joueur", font=("Helvetica", 18,"bold"),bg= "#8e2711",fg="#FFFACD")
texte2.place(x=390,y=300)

texte3 = Label(fenetre, text="Cliquez sur l'image de votre choix", font=("Helvetica",12),bg= "#8e2711",fg="#FFFACD")
texte3.place(x=450,y=150)



lab1 = Label(fenetre, text="",width =6, height =1,fg= "#800000",bg="#FFA500",font=("Segoe Script", "20","bold"))
lab1.place(x=375,y= 340)

lab2 = Label(fenetre, text="",width = 6, height =1,fg= "#ffffff",bg="#FFA500",font=("Segoe Script", "20","bold"))
lab2.place(x=220,y= 340)


score1 = Label(fenetre, text="0", font=("Helvetica", 30,"bold"),bg= "#8e2711",fg="#FFFACD")
score1.place(x=270, y=450)

score2 = Label(fenetre, text="0", font=("Helvetica", 30,"bold"),bg= "#8e2711",fg="#FFFACD")
score2.place(x=430, y=450)


fenetre.mainloop()

A voir également:

2 réponses

yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476
7 janv. 2022 à 22:39
bonjour,
je suggère de faire deux choses:
1) ajouter une ligne print("reinit") au début de la fonction reinit, ce qui t'aidera à déterminer si la fonction est appelée.
2) comparer la définition du bouton4 avec les déclarations des autres boutons
1
Merci beaucoup, ça fonctionne !

Je me permets une autre question concernant l'importation d'image pour mettre sur les boutons.

Je dois normalement mettre des images et non du texte sur les boutons mais j'ai abandonné après de heures de recherches !
Je sais que pour cela il faut utiliser "Photoimage" mais un message d'erreur indique :
   self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "CIS.gif": no such file or directory


J'ai lu que " toutes ces images, au format gif, doivent se trouver dans le même répertoire que le programme" mais je ne comprends.
Mon image "CIS.gif" se trouvait pourtant dans un dossier comprenant le code.

Merci du conseil éventuel
0
import os

image = PhotoImage(file = "C:\\Users\\chris\\OneDrive\\Images\\allumettes - Copie.png")

Tu dois importer le nom complet, chez moi ça a fonctionné. Ne pas oublier de doubler les antislachs.
0