Mini Projet - Le Jeu du MOTUS
Par binôme vous allez travailler de manière collaborative pour élaborer le jeu du pendu version graphique avec turtle.
Cahier des charges
La partie se joue en 7 coups maxi
L’ordinateur doit choisir
un mot de 8 lettres aléatoirement dans une liste
L’utilisateur doit trouver le mot de 8 lettres en proposant un mot de 8 lettres.
L'ordinateur
indiquer au joueur les lettres bien placées et mal placées par un code
couleur et afficher le résultat des lettres trouvées ou mal placées
dans une grille.
Si le joueur trouve le mot en moins de 8 coups il gagne et la partie peu recommercer ou pas.
Vous pouvez essayer d'y jouer ici : https://motus.absolu-puzzle.com/
Interface de notre jeu :

Liste des fonctions
Nom de la fonction | Paramètres d'entrées | Retour | Variables globales | durée |
• Init_jeu() | aucun
| aucun | | 30 min |
• Choix_Mot() | aucun | le mot de 8 lettres | lettres_trouvees | 20 min |
• Verification() | aucun | aucun | | 30 min |
• Position_lettres(mot_saisi) | mot_saisi
| chaine de caractère du placement des lettres | lettres_trouvees | 30 min |
• Code_couleur(coul,prop) | code couleur et proposition saisie | aucun | coup, mot | 20 min |
• Placer_lettres(coups,lettres,coul) | nbr de coups, lettres, code couleur | aucun | | 20 min |
Le nom du fichier portera le nom de la fonction.
Role des focnctions :
Choix_mot()
Cette fonction permet de choisir aléatoirement un mot de 8 lettres dans une liste et de le retourner dans la variable mot.
Déclarer la variable globale lettre_trouvees
Initialiser cette variable avec le contenu suivant : ['.','.','.','.','.','.','.','.']
Initialiser la variable mot liste des mots suivante : ['ACCAPARA',................,'DENOTANT']
choisir aléatoirement un mot de la liste
Modifier le premier élément de la liste des lettres_trouvees par la première lettre du mot choisi
(Exemple pour MOULATES : lettres_trouvees=['M','.','.','.','.','.','.','.'])
Retourner le mot
Init_jeu() 
Cette fonction dessine le plateau de jeu comprenant :
• une grille de 8 colonnes et 8 lignes sur fond bleu,
• 7 lignes de points et une ligne vide,
• une zone de saisie
• un bouton Valider
Voir figure ci-contre:
Aide :
utiliser des boucles for pour implanter les labels dans la grille
Code tkinter pour placer le point dans une colonne de la grille :e = Label(fenetre, text='.', background=couleur,font=(None,20),foreground='#FFF')
e.grid(row=ligne, column=col,columnspan=1, sticky=E+W,ipadx=15,ipady=10,padx=1,pady=1)
Code de la zone d’entrée et le bouton validerChamp = Entry(fenetre,font=(None,20), textvariable= Proposition)
Champ.focus_set()
Champ.grid(row=9,column=0,columnspan=6,pady=10, padx=10)
Bouton = Button(fenetre, font=(None,12),text ='Valider', command = Verification)
Bouton.grid(row=9,column=6,columnspan=2,pady=10,padx=20, sticky=E+W)
La variable coups permettra de compter le nombre d’essai mais également d’afficher les lettres trouvées sur la ligne concernée
Fonction Verification()
Elle sera appelée lorsque l’utilisateur clique sur le bouton valider :

Récupérer le mot de 8 lettre saisi dans le champ entry
Si le mot ne contient pas 8 lettres
un avertissement apparait
Sinon
On appelle la fonction qui renvoie qui renvoie la position des lettres trouvées
On appelle une fonction qui affiche le code des couleurs et qui affiche les lettres trouvées
Si la position des lettres renvoyées indique qu’elles sont bien placées ou qu’il y a eu 7 coups
Si elles sont bien placées c’est gagné
Sinon c’est perdu et on appelle la fonction qui place le mot à trouver
sur fond rouge dans la dernière ligne de la grille
On demande à l’utilisateur s’il veut rejouer
Si c’est non on quitte la fenetre (fenetre.quit())
Sinon on remet les coups à 0, on cherche un nouveau mot et on place la première ligne de la grille.
Position_lettres(mot_choisi)
Déclarer la variable globale lettres_trouvees et mot
Déclarer une variable placement de type string vide.
Pour i de 0 à 8 :
Comparer chaque lettre du mot_choisi et du mot à trouver
Si les lettres sont égales
ajouter ‘1’ à la chaine placement et placer la lettre dans lettres_trouvées
sinon
si la lettre choisie se trouve dans le mot à trouver
ajouter ‘2’ à la chaine placement
sinon
ajouter ‘3’ à la chaine placement
retourne la valeur de la chaine placement
code_couleur(coul,prop)
Déclarer la variable globale coups et mot
Pour i de 0 à 8 :
Si l’élément de rang i de la liste coul est ‘1’:
Alors mettre la variable bgcol avec un code couleur verte
Affecter à la variable lettre, la lettre du rang i du mot à trouver
Sinon si l’élément de rang i de la liste coul est ‘2’:
Alors mettre la variable bgcol avec un code couleur orange
Affecter à la variable lettre, la lettre du rang i du mot proposé
Sinon:
mettre la variable bgcol avec un code couleur bleu
affecter à la variable lettre, la lettre du rang i du mot proposé
Placer
le label dans la fenetre contenant le texte de lettre avec une couleur
d'arriere plan bgcol et une couleur d'avant plan blanche
Placer le label dans la grille rangée coups, colonne i
Incrémenter le nombre de coups
Placer_lettres(coups,lettres,coul):
Mettre la variable col à 0
pour chaque lettre se trouvant dans la liste des lettres faire :
placer un label contenant la lettre à la ligne coups, rangée col,
de couleur de fond coul, d'ecriture blanche
incrémenter col
Résultat :

Programme principal
Importer les différentes librairies
Initialiser les variables : mot='', lettre_trouvees=[], coups=0 , Proposition=Stringvar()
appeler la fonction permettant de choisir aléatoirement le mot de 8 lettres et stocker le résultat dans la variable mot
initialiser le jeu
Placer les lettres trouvées sur fond bleu
Mainloop
planifier le travail (environ 2h / personne)
En rouge Elève 1
En orange Elève 2

Téléchargez le Miniprojet, décompressez les fichier dans vos documents et complétez les fonctions :
MiniProjet