jeu du pendu

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour, je n'arrive pas à repérer un problème ou détecter un bug, si quelqu'un pourrait m'indiquer comment m'en sortir svp. Chaque fois que le joueur devine une lettre, nombre_essai doit s'incrémenter de 1 dans la fonction deviner() Mais ça ne change pas. Aussi, le jeu n'est pas terminé, je n'ai pas implanté les essai_raté qui permettent d'afficher le tableau du pendu suivant à chaque fois que l'on se trompe, mais j'imagine que j'aurais le même problème.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# -*- coding:Utf-8 -*-
#jeu du pendu

import random, sys

TABLEAU = [
'  +---+   \n  |   |   \n      |   \n      |   \n      |   \n      |   \n========= \n',
'  +---+   \n  |   |   \n  0   |   \n      |   \n      |   \n      |   \n========= \n',
'  +---+   \n  |   |   \n  0   |   \n  |   |   \n      |   \n      |   \n========= \n',
'  +---+   \n  |   |   \n  0   |   \n /|   |   \n      |   \n      |   \n========= \n',
'  +---+   \n  |   |   \n  0   |   \n /|\\  |   \n      |   \n      |   \n========= \n',
'  +---+   \n  |   |   \n  0   |   \n /|\\  |   \n /    |   \n      |   \n========= \n',
'  +---+   \n  |   |   \n  0   |   \n /|\\  |   \n / \\  |   \n      |   \n========= \n'
]

BANQUE = ['voiture', 'deux', 'coucou', 'cheval', 'banane', 'pompier']

def choix_mot():
    x = random.randint(0, len(BANQUE)-1)
    mot = BANQUE[x]
    return mot

def cacher_mot(mot_choisi):
    mot_caché = " _" * len(mot_choisi)
    return mot_caché

def dessiner_tableau(essai): #vérifie le nombre d'essais et dessine le tableau en fonction
    print(TABLEAU[essai])

def afficher_mot(mot_cherché, mot_caché, lettres_trouvé):
    mot_caché = ""
    for i in mot_cherché:
        if i in lettres_trouvé:
            mot_caché += i
        else:
            mot_caché += ' _'
    return print(mot_caché)

def deviner(nombre_essai, nombre_essai_max, mot_cherché, mot_caché, lettres_trouvé):
    essai = input("Essayez de deviner le mot secret, ou une lettre:\n>>>").lower()
    for i in mot_cherché:
        if essai == ":q" or essai == ":quit":
            sys.exit()
        elif len(essai) == 1 and essai == i:
            print("la lettre", essai, "est correcte !")
            print("elle se trouve en position :")
            lettres_trouvé.append(essai)
            nombre_essai += 1
            break
        elif len(essai) == 1 and essai != i:
            print("la lettre", essai, "n'est pas dans le mot secret!")
            nombre_essai += 1
            break
        elif len(essai) > 1 and essai == mot_cherché:
            print("ok")
            vérif_victoire(nombre_essai, nombre_essai_max, mot_cherché, mot_caché)
            break
        elif len(essai) > 1 and essai != mot_cherché:
            print("Ce n'est pas le bon mot!")
            nombre_essai += 1
            break

def vérif_victoire(nombre_essai, nombre_essai_max, mot_cherché, mot_caché):
    if nombre_essai <= nombre_essai_max and mot_cherché == mot_caché:
        print("BRAVO !")
        sys.exit()
    elif nombre_essai == nombre_essai_max and mot_cherché != mot_caché:
        print("PERDU !")
        sys.exit()

def jeu():
    nombre_essai_max = 6
    nombre_essai = 0
    essai_raté = 0
    lettres_trouvé = []

    mot_cherché = choix_mot()
    mot_caché = cacher_mot(mot_cherché)
    #print("mot cherché", mot_cherché, "mot_caché", mot_caché) vérification debug

    while nombre_essai <= nombre_essai_max:
        print("essai n°", nombre_essai)
        dessiner_tableau(essai_raté)
        afficher_mot(mot_cherché, mot_caché, lettres_trouvé)
        deviner(nombre_essai, nombre_essai_max, mot_cherché, mot_caché, lettres_trouvé) #joueur propose une lettre ou un mot
        vérif_victoire(nombre_essai, nombre_essai_max, mot_cherché, mot_caché) #vérifie si le jouer à trouver juste avant la fin des essais

def menu():
    print("Jeu du pendu")
    print("Deviner un mot avant que le nombre d'essais soit passé")
    réponse = input("Commencer une partie ?\n>>>").lower()

    if réponse == "oui" or réponse == "o":
        jeu()
    #else:
        #print("Ajouter un mot dans la banque ?")

menu()
+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte