Skip to content

📝 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
Accueil