~ / teaching / Python / tps / 2-hangman /
© 2010—2012 - Renaud Blanch
Le but de ce TP est de vous familiariser avec les entrés/sorties et avec quelques modules de base de la bibliothèque standard de Python.
Vous allez réaliser un jeu de pendu. Le programme choisira un mot au hasard dans une liste. Il demandera au joueur d'entrer une lettre jusqu'à ce que le mot soit deviné (victoire), ou bien qu'il ait épuisé son crédit d'erreurs (i.e., que le pendu soit dessiné complètement).
Réalisez une fonction read_words
qui charge un fichier texte dans lequel il y a un mot par ligne et retourne une liste de ces mots.
Faites en sorte que par défaut cette fonction utilise le vocabulaire contenu dans le fichier animals.txt.
Réalisez une fonction get_letter
qui demande à l'utilisateur d'entrer un caractère en vérifiant :
(1) qu'il s'agit bien d'une lettre (ASCII minuscule pour simplifier) ; et
(2) qu'elle n'a pas déjà été entrée.
Pour savoir si la lettre a déjà été entrée, get_letter
prend en argument la liste des lettres déjà choisies.
>>> get_letter(["a", "b"]) letter? a letter? î letter? c 'c'
Réalisez une fonction draw_hangman
qui, suivant le nombre d'erreurs passé en paramètre retourne le pendu correspondant en ASCII art, par exemple comme illustré ci-dessous.
>>> print(draw_hangman(6)) ______ |/ | | O | /M\ | W | / \ |
Réalisez une fonction hidde_letters
qui prend en paramètres un mot et une liste de lettres déjà choisie par le joueur et qui retourne le mot avec les lettres encore non choisies remplacées par un tiret "-
".
>>> print(*hidde_letters("titi", ["i", "o"])) - i - i
Assemblez les fonctions créées ci-dessous pour permettre de jouer au pendu. Faites en sorte qu'à la fin d'une partie le joueur puisse choisir de rejouer ou de quitter le jeu.
% python3 hangman.py ______ |/ | | | | | | ---- () letter? e ______ |/ | | O | | | | ---- (e) letter? a ______ |/ | | O | | | | --a- (ea) letter? t ______ |/ | | O | | | | --at (eat) letter? c ______ |/ | | O | | | | c-at (eatc) letter? h ______ |/ | | O | | | | chat (eatch) YOU WIN! play again [Y/n]? n bye!
Faites en sorte que votre programme puisse prendre en paramètre sur la ligne de commande le nom du fichier servant de lexique au jeu.
Si ce paramètre n'est pas donné, utilisez animals.txt
comme valeur par défaut.
mise à jour : 7 septembre 2017