Consignes
Ce travail est un travail individuel. Il est indispensable de le mener à bien seul : ce travail fait partie de votre travail de formation et est indispensable pour s'assurer d'être capable de mener à bien
un projet informatique.
Rappel de bonnes marches à suivre : penser à décomposer en fonctions les tâches dès que cela est possible,
penser à renseigner proprement les docstrings (commentaires) des fonctions, à commenter intelligemment les programmes.
Un programme bien commenté doit pouvoir être compris sans avoir à lire le code.
Un bon commentaire n'est pas paraphrase. A côté d'une boucle for i in range(10), il est inutile
d'écrire un pseudo-commentaire du style Pour i prenant les valeurs de 0 à 9...
Le commentaire doit annoncer l'intention, le rôle de la boucle, le rôle des variables, le principe de l'algorithme...
Il est possible d'ajouter en commentaire votre programme en langage naturel. Cela est particulièrement conseillé si vous n'arrivez pas à débuguer votre programme python : vous nous permettez au moins par cet exposé en langage naturel de comprendre vos intentions. Sans cela, il nous sera impossible de vous apporter le moindre conseil et d'évaluer votre travail.
Défi 5 : Jeu du motus
Votre fichier .py (rendre un unique fichier .py) devra être nommé NOM_Prenom_Defi_5_motus.py. Respectez cet ordre (votre nom en premier).
Vous rappellerez par ailleurs en commentaire en début de fichier vos nom et prénom.
Vous déposerez le fichier dans votre Drive dans le répertoire partagé "SI Nom Prénom".
Le non respect de ces consignes sera également pénalisé.
Motus est un jeu télévisé diffusé sur France 2 depuis 1990 ! Le jeu repose sur la recherche de
mots d’un nombre fixé de lettres. Un candidat propose un mot et doit épeler celui-ci. Le mot doit
contenir le bon nombre de lettres et être correctement orthographié, sinon il est refusé. Le mot
apparaît alors sur une grille : les lettres bien placées sont coloriées en rouge, les lettres présentes
mais mal placées sont cerclées de jaune. Une lettre de l’alphabet ne peut pas être coloriée (en jaune
ou en rouge si certaines sont bien placées) plus de fois qu’elle n’est présente dans le mot à deviner.
Par exemple, si le mot à deviner est SERRES et qu’on propose le mot SEMELE, le premier E sera
signalé comme bien placé, le deuxième comme mal placé et le dernier ne sera pas signalé puisque
le mot à deviner ne contient que 2 fois la lettre E.
Version simplifiée du jeu
On se propose ici de programmer une version simplifiée du jeu. Une fois le mot à deviner rentré, le
programme invite le candidat à saisir un mot. La première lettre sera donnée et les lettres restantes
signalées par des tirets :
M---- : # ici, un mot de cinq lettres commençant par M
Si des lettres sont bien placées dans le mot proposé par le candidat, elles sont rajoutées dans le
mot à deviner :
M---- : MATHS # le candidat propose le mot MATHS
M-T-S : # Les lettres M, T et S sont bien placées
Dans cette partie, on ne gère pas les lettres mal placées.
Le candidat recommence jusqu’à avoir trouvé le mot mystère, ou épuisé tous ses essais. Le nombre
d’essais est égal au nombre de lettres du mot à deviner. Si le candidat ne devine pas le mot mystère,
la réponse est affichée.
Voici un exemple d’exécution du programme :
- V _ _ _ _ # On cherche un mot de 5 lettres commençant par V
- Proposer un mot : Veste V _ _ _ e # La lettre e est bien placée.
- Proposer un mot : Voici V _ _ _ _ # Aucune lettre n’est bien placée.
- Proposer un mot : Vanne V a _ _ e # Les lettres ae sont bien placées.
- Proposer un mot : Vanne V a _ _ e # Les lettres ae sont bien placées.
- Proposer un mot : Voila V _ _ _ _ # Aucune lettre n’est bien placée.
- Proposer un mot : Vitre V _ _ _ e # La lettre e est bien placée.
- Vous avez atteint le nombre d’essais sans trouver le mot. Le mot mystère était : Valse
Pour la conception du jeu, il est nécessaire de maitriser tous les fondamentaux de python (tests, boucles, types de variables...), l'emploi de fonctions, la notion de listes
Les fonctions suivantes sont à définir impérativement :
- choix_mot: fonction qui invite le joueur à entrer un mot à deviner et renvoie ce mot.
- affiche_mot_a_deviner: fonction qui affiche la première lettre du mot à deviner et le nombre de lettres, pour un mot qui commence par c et comporte 5 lettres, la fonction doit afficher :
c _ _ _ _ # On cherche un mot de 5 lettres commençant par c
- proposition: fonction qui prend en paramètre un mot à rechercher et vous invite à entrer
une proposition. Votre fonction doit demander à nouveau une proposition si cette proposition est
la chaîne vide, ou si le mot proposé n’a pas le bon nombre de lettre ou ne commence pas par la
bonne lettre.
- test_prop: fonction qui prend une proposition de mot et le mot à trouver en
paramètres, qui affiche (print) une chaîne de caractères qui précise quelles lettres sont bien placées.
Cette fonction doit de plus renvoyer (return) une chaîne de caractères comportant toutes les lettres
bien placées.
Par exemple, test_prop(“cout”, “chat”) doit afficher la chaîne suivante :
c _ _ t # La lettre t est bien placée.
et renvoyer la chaîne “t” car la lettre t est bien placée.
Par exemple, test_prop(“cout”, “croc”) doit afficher la chaîne suivante :
c _ _ _ # Aucune lettre est bien placée.
et renvoyer la chaîne vide car aucune lettre n’est bien placée.
- partie: fonction partie qui prend en paramètre le mot à trouver et vous permet
de jouer. Cette fonction gère le nombre de coups à jouer. On recommence jusqu’à ce que vous ayez
gagné ou que vous ayez atteint le nombre maximal d’essais autorisés. Cette fonction donne le mot
mystère après un nombre d’essais infructueux égal au nombre de lettres du mot.