Problème time.sleep [Résolu]

Signaler
Messages postés
23
Date d'inscription
lundi 22 août 2016
Statut
Membre
Dernière intervention
4 décembre 2019
-
clement5188
Messages postés
23
Date d'inscription
lundi 22 août 2016
Statut
Membre
Dernière intervention
4 décembre 2019
-
Bonjour, j'ai commencer un jeu en python ou nous sommes la première personne d'une histoire a un moment il y a un combat :
def combat_début():
    global pts_moi
    global pts_mrx
    global text_pts_moi
    global text_pts_mrx
    text.config(text="c parti pour le combat")
    bouton_combat.destroy()
    pts_moi = 50
    pts_mrx = 50
    text_pts_moi = Label(frame_haut, text=pts_moi,font=("Courrier",20),bg="#2828A1",fg="white")
    text_pts_mrx = Label(frame_haut, text=pts_mrx,font=("Courrier",20),bg="#2828A1",fg="white")
    text_pts_moi.grid(column=2,row=0,sticky="e")
    text_pts_mrx.grid(column=0,row=0,sticky="w")
    combat()

def combat():
    text.config(text="attaquez!")
    global attaque1
    global attaque2
    global attaque3
    global attaque4
    attaque1 = Button(frame_bas,text="attaque1\n 1~7pts", font=("Courrier",20), bg="#2828A1",fg="white", command=attaque1)
    attaque2 = Button(frame_bas,text="attaque2\n 3~5pts", font=("Courrier",20), bg="#2828A1",fg="white", command=attaque2)
    attaque3 = Button(frame_bas,text="attaque3\n 4pts", font=("Courrier",20), bg="#2828A1",fg="white", command=attaque3)
    attaque4 = Button(frame_bas,text="attaque4\n  0~9pts", font=("Courrier",20), bg="#2828A1",fg="white", command=attaque4)
    attaque1.grid(row=0,column=0)
    attaque2.grid(row=0,column=1)
    attaque3.grid(row=1,column=0)
    attaque4.grid(row=1,column=1)

def attaque1():
    global pts_mrx
    attaque1.destroy()
    attaque2.destroy()
    attaque3.destroy()
    attaque4.destroy()
    pts_mrx-=random.randint(1,10)
    text_pts_mrx.config(text=pts_mrx)
    check_pts_mrx()

def attaque2():
    global pts_mrx
    attaque1.destroy()
    attaque2.destroy()
    attaque3.destroy()
    attaque4.destroy()
    pts_mrx-=random.randint(1,10)
    text_pts_mrx.config(text=pts_mrx)
    check_pts_mrx()

def attaque3():
    global pts_mrx
    attaque1.destroy()
    attaque2.destroy()
    attaque3.destroy()
    attaque4.destroy()
    pts_mrx-=random.randint(1,10)
    text_pts_mrx.config(text=pts_mrx)
    check_pts_mrx()

def attaque4():
    global pts_mrx
    attaque1.destroy()
    attaque2.destroy()
    attaque3.destroy()
    attaque4.destroy()
    pts_mrx-=random.randint(1,10)
    text_pts_mrx.config(text=pts_mrx)
    check_pts_mrx()


def check_pts_mrx():
    if pts_mrx>0:
        attaque_mrx()
    else:
        text.config(text="mrx est mort!")
        win()

def attaque_mrx():
    global pts_moi
    text.config(text="mrx attaque!")
    time.sleep(4)
    pts_moi-=random.randint(1,7)
    text_pts_moi.config(text=pts_moi)
    check_pts_moi()
def check_pts_moi():
    if pts_moi>0:
        combat()
    else:
        lose()

def lose():
    text.config(text="bravo")

def win():
    text.config(text="perdu")

ce code n'est que la parti du combat je le précise
quand je suis dans la fenêtre tkinter je clique sur le bouton attaque 1 il reste figé et le text "Mrx attaque !" ne s'affiche pas je pense que c'est a cause du time.sleep(4) mais je n'est pas trouvé autre chose avez vous une idée?

1 réponse

Messages postés
334
Date d'inscription
vendredi 25 septembre 2015
Statut
Membre
Dernière intervention
13 novembre 2019
145
Bonjour,
c'est normal que la fenêtre se fige pendant le sleep mais elle devrait revenir à la normal au bout de 4 secondes. Est-ce que c'est bien le cas ?
Si vous voulez que le texte soit modifié avant d'attendre les 4 secondes, vous pouvez faire
text.config(text="mrx attaque!")
text.update()
time.sleep(4)
clement5188
Messages postés
23
Date d'inscription
lundi 22 août 2016
Statut
Membre
Dernière intervention
4 décembre 2019

Super merci beaucoup c exactement ce que je voulais