📝 Mini-projet : Jeu du Pendu en Python
🎯 Objectif
Nous allons programmer le célèbre jeu du pendu en Python.
Le principe est simple : un mot est choisi au hasard, et le joueur doit le deviner en proposant des lettres. À chaque erreur, on ajoute un élément du pendu. Le jeu s’arrête si le joueur trouve toutes les lettres ou s’il atteint le nombre maximum d’erreurs.
Dans ce TP, vous compléterez les fonctions manquantes dans le fichier Python donné, en respectant les consignes et en testant votre code.
Organisation des fichiers đź“‚
Pour que votre projet fonctionne correctement, vous devez placer tous les fichiers dans un même répertoire (dossier).
Les fichiers nécessaires sont :
- pendu.py : contient les fonctions que vous devez compléter.
- pendu_dico.txt : dictionnaire de mots utilisés pour le pendu.
👉 Arborescence attendue :
mon_projet_pendu/
│
├── pendu.py
└── pendu_dico.txt
1. Choix d’un mot aléatoire
La fonction suivante est déjà écrite :
def choix_mot(nom_fichier:str)->str:
"""
Fonction qui renvoie un mot du fichier texte source
Paramètre: nom_fichier : de type chaine de caractère
Retour : str, un mot du fichier, de type chaine de caractère
"""
with open(nom_fichier, "r") as myfile:
les_mots = myfile.readlines() # les_mots : liste deslignes du fichier
longueur = len(les_mots)
nb = random.randint(1, longueur)
mot = les_mots[nb].strip() # strip() pour supprimer le retour chariot
mot = " ".join(mot) # permet d'espacer les lettres
return mot
👉 Dites, selon vous, ce que fait cette fonction en analysant rapidement son code.
informations
Écrivez vos réponses directement dans le fichier python, juste après # réponse
.
2. Cacher le mot avec des underscores
On veut afficher un mot inconnu sous forme de tirets bas _
, un par lettre.
Exemple:
mot = "C H A T"
→ "_ _ _ _"
👉 À vous d’écrire la fonction :
def cacher_mot(mot:str)->str:
"""
fonction qui renvoie une chaine d'underscores de la même longueur que le paramètre mot
Paramètre: mot, de type chaine de caractère
Retour: mot_inconnu: chaine de caractère avec des "_"
đź§Ş Teste avec doctest :
>>> cacher_mot("P E N D U")
'_ _ _ _ _'
>>> cacher_mot("C H A T")
'_ _ _ _'
3. Vérifier si une lettre est présente
On veut une fonction qui renvoie True
si une lettre est dans le mot, et False
sinon.
👉 Complètez la fonction :
def verifier_lettre(mot:str, caractere:str)->str:
"""
fonction qui renvoie True si caractere est présent dans mot
Paramètres: caractere, de type chaine de caractère
mot, de type chaine de caractère
Retour: Booléen, True si le caractere est dans le mot, False sinon
đź§Ş Teste avec doctest :
>>> verifier_lettre("P E N D U", "E")
True
>>> verifier_lettre("P E N D U", "A")
False
4. Révéler une lettre trouvée
Quand le joueur propose une lettre correcte, il faut la remplacer Ă la bonne position dans le mot inconnu.
Exemple:
mot = "P E N D U"
mot_inconnu = "_ _ _ _ _"
caractere = "E"
→ mot_inconnu = "_ E _ _ _"
👉 Complètez la fonction :
def lettre(mot:str, mot_inconnu:str,caractere:str)->str:
"""
Fonction qui affiche la lettre trouvée à la place de l'unduscore de mot_inconnu
Paramètre: caractere, de type chaine de caractère
mot_inconnu, de type chaine de caractère
mot, de type chaine de caractère
Retour: mot_inconnu, de type chaine de caractère
đź§Ş Teste avec doctest :
>>> lettre("P E N D U", "_ _ _ _ _", "E")
'_ E _ _ _'
>>> lettre("P E N D U", "_ _ _ _ _", "A")
'_ _ _ _ _'
5. Compter les erreurs
On a besoin d’une fonction qui incrémente le nombre d’erreurs du joueur.
👉 Complètez la fonction :
def nb_erreur(erreur:int)->int:
"""
fonction qui comptabilise le nombre d'erreurs
Paramètre: nb_erreur, de type int
Retour: nb_erreur, de type int
đź§Ş Teste avec doctest :
>>> nb_erreur(5)
6
>>> nb_erreur(0)
1
6. Utilisation de l’interface 🎮
Pour jouer, vous allez maintenant intégrer le fichier interface.py dans votre répertoire.
Voici à quoi doit ressembler votre répertoire après avoir ajouté le fichier :
mon_projet_pendu/
│
├── pendu.py
├── interface.py
└── pendu_dico.txt
Ce fichier contient une fonction principale qui gère l’affichage et la saisie.
Pour démarrer le jeu, exécutez le fichier interface.py
.
👉 Question 3 : Selon vous, à quoi sert l’interface dans ce projet ?
👉 Question 4 : Quelles sont les informations qui doivent être envoyées par pendu.py
vers interface.py
?
Pour aller plus loin
👉 Créez votre propre interface console dans le fichier pendu.py
. L'affichage doit être mis à jour et affiché à chaque saisie de lettre.
Exemple:
Mot Ă trouver : _ _ _ _
Nombre d’erreurs : 3
Quelle est votre lettre ? ...
Ici, _
représente les lettres non trouvées et la zone après le ?
attend la lettre saisie par l'utilisateur.
Exemple:
Exemple quand le joueur perd (6 erreurs):
Mot Ă trouver : _ _ _ _
Nombre d’erreurs : 6
Quelle est votre lettre ? x
Dommage ! Vous avez perdu.
Le mot était : CHAT
Exemple quand le joueur gagne :
Mot Ă trouver : C H A _
Nombre d’erreurs : 2
Quelle est votre lettre ? T
Bravo ! Vous avez trouvé le mot : CHAT