Problème time.sleep

Résolu/Fermé
clement5188 Messages postés 25 Date d'inscription lundi 22 août 2016 Statut Membre Dernière intervention 20 mai 2020 - Modifié le 17 avril 2019 à 20:35
clement5188 Messages postés 25 Date d'inscription lundi 22 août 2016 Statut Membre Dernière intervention 20 mai 2020 - 20 avril 2019 à 00:08
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

quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 346
19 avril 2019 à 15:44
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)
1
clement5188 Messages postés 25 Date d'inscription lundi 22 août 2016 Statut Membre Dernière intervention 20 mai 2020
20 avril 2019 à 00:08
Super merci beaucoup c exactement ce que je voulais
0