randominputLe but de ce TP est de créer un jeu du Pendu en console Python, sans interface graphique.
Rappelons rapidement le principe de base du Pendu : le but est de découvrir un mot dont on connaît le nombre de lettres, ces dernières étant masquées au début du jeu. On dispose d’un nombre maximum d’essais.
À chaque tour, le joueur propose une lettre. Si cette lettre est dans le mot, elle est découverte, autant de fois qu'elle apparaît dans le mot. Si la lettre n’apparaît pas dans le mot cherché ou qu’elle est déjà découverte, on diminue le nombre d’essais restants#### Jeu du Pendu ####
Mot : ************
Proposez une lettre (5 essais) : A
Le mot contient la lettre A.
Mot : ******A*****
Proposez une lettre (5 essais) : I
Le mot contient 2 lettres I.
Mot : I*****A*I***
Proposez une lettre (5 essais) : D
Le mot ne contient pas la lettre D.
Il vous reste 4 essais.
Mot : I*****A*I***
Proposez une lettre (4 essais) : E
Le mot contient la lettre E.
Mot : I*****A*I**E
Proposez une lettre (4 essais) : I
Vous avez déjà proposé la lettre I...
Il vous reste 3 essais.
Mot : I*****A*I**E
Proposez une lettre (3 essais) :
............
Le jeu se termine de deux manières :
# Victoire du joueur
Mot : INFORMATIQ*E
Proposez une lettre (3 essais) : Q
Le mot contient la lettre Q
Le mot est INFORMATIQUE
BRAVO
# Défaite du joueur
Mot : I*F***A*I**E
Proposez une lettre (1 essai) : Z
Le mot ne contient pas la lettre Z
Le mot cherché est INFORMATIQUE
PERDU
Pour ne pas rajouter de difficultés supplémentaires, ce jeu se jouera dans la console Python. Libre à vous de développer une
interface graphique (avec un module comme pygame) mais ce n’est pas le but premier de ce TP.
Pour que notre programme soit clair, nous allons le séparer en deux fichiers :
pendu.py, qui contiendra toutes les fonctions utiles au programmemain.py, qui contiendra la boucle principale de notre programmependu.pyAvant de coder la boucle de jeu principale, on se propose de coder toutes les fonctions auxillaires dont nous aurons besoin dans notre programme.
Écrire une fonction choisirMot(liste) qui renvoie un mot sélectionné aléatoirement dans liste. Le mot retourné doit être en majuscules. On s’aidera du module random pour coder cette fonction.
>>> listeMots = ["BANANE", "pomme", "Poire", "Fraise", "ABRICOT", "peche"]
>>> choisirMot(listeMots)
’POMME’
>>> choisirMot(listeMots)
’ABRICOT’
Écrire une fonction masquer(mot) qui renvoie une chaîne de caractères composée d’autant d’étoiles * qu’il y a de lettres dans mot.
>>> masquer("BANANE")
’******’
>>> masquer("PECHE")
’*****’
Écrire une fonction indicesLettre(lettre, mot) qui retourne la liste des indices de lettre dans mot.
>>> indicesLettre("A", "BANANE")
[1,3]
>>> indicesLettre("E", "FRAISE")
[5]
>>> indicesLettre("I", "PECHE")
[]
Écrire une fonction decouvrir(lettre, motMasque, mot) qui découvre les * de motMasque correspondantes
à lettre dans mot, et renvoie motMasque ainsi modifié.
>>> decouvrir("A", "******", "BANANE")
’*A*A**’
>>> decouvrir("E", "P**R*", "POIRE")
’P**RE’
>>> decouvrir("C", "PO***", "POMME")
’PO***’
indicesLettre définie précédemment.main.pyVoici un code de base à compléter pour créer votre jeu.
from pendu import *
listeMots = ["ORDINATEUR", "INFORMATIQUE", "TELEPHONE", "BANANIER", "CITRONNIER", "PANGOLIN"]
nombreEssaisRetants = 5
continuer = True
mot = choisirMot(listeMot)
motMasque = masquer(mot)
while continuer:
# Instructions de jeu
print(f"Mot : {motMasque}")
lettre = input("Proposez une lettre : ")
if lettre in mot:
print(f"La lettre {lettre} est dans le mot !")
# Mise à jour du booléen continuer
continuer = True
Coder le jeu du pendu. Proposez des améliorations et mettez-les en place dans votre programme.