Préparation du jeu

Pour commencer, nous allons créer un dictionnaire en chargeant une liste de mots figurant dans un fichier texte.

L'import d'un fichier texte dans une liste se fait facilement en Python :

liste_mots = []
with open("liste_mots.txt","r") as fichier:
    liste_mots = fichier.readlines()

len(liste_mots)
336529

Pour choisir un mot aléatoire dans cette liste, nous utiliserons la fonction choice du module random.

Le mot choisi contient un caractère de fin de ligne parasite (\n) que nous éliminerons grâce au slicing : on garde tous les caractères depuis le début jusqu'au dernier, exclu.

Exécutez plusieurs fois la cellule ci-dessous pour voir les différents choix de mots aléatoires.

from random import choice

mot_inconnu = choice(liste_mots)[:-1]

mot_inconnu

Développement des différentes fonctions utiles au jeu

Créez une fonction masque prenant en paramètre un mot et renvoyant une chaîne masquée contenant autant de '-' qu'il y a de lettres dans le mot.

Par exemple : masque('python') renvoie '------'

def masque(mot):
    # YOUR CODE HERE
    raise NotImplementedError()
assert masque('python') == '------'

Créez une fonction devine prenant en paramètres

  • le mot inconnu
  • le mot masqué
  • une lettre et renvoyant le masque dans lequel la lettre proposée apparaît à toutes les places où celle-ci est présente dans le mot.

Exemple : devine('python','p----n','t') renvoie 'p-t--n'

def devine(mot, mot_masque, lettre):
    # YOUR CODE HERE
    raise NotImplementedError()
assert devine('python','p----n','t') == 'p-t--n'

Jouer une partie

Nous disposons à présent des fonctions nécessaires pour jouer une partie. Il ne nous reste donc plus qu'à réaliser la fonction jouer qui

  • prend en paramètre une lettre ainsi qu'une liste contenant
    • le mot à deviner
    • le mot masqué (ou partiellement découvert)
    • le nb d'erreurs réalisées
  • renvoie la liste actualisée (avec le mot masqué ou le nombre d'erreurs)

Exemples :

  • jouer('a', ["python", "------",0]) renvoie ["python", "------",1] car on a une erreur
  • jouer('p', ["python", "------",0]) renvoie ["python", "p-----",1]
def jouer(lettre, etat):
    # YOUR CODE HERE
    raise NotImplementedError()
mot = "python"
mask = masque(mot)
nb_err = 0

assert jouer("a", [mot, mask, nb_err]) == ['python', '------', 1]
assert jouer("p", [mot, mask, nb_err]) == ['python', 'p-----', 0]
mot = "python"
etat = [mot, masque(mot),0]
etat = jouer("a", [mot, mask, nb_err])
etat
etat = jouer("p", etat)
etat
etat = jouer("u", etat)
etat
etat = jouer("n", etat)
etat
etat = jouer("y", etat)
etat
etat = jouer("t", etat)
etat
etat = jouer("o", etat)
etat
etat = jouer("h", etat)
etat