đ 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