# Wordle

#### But du travail pratique

Le but de ce travail pratique est de réaliser un wordle. Le jeu doit implémenter 3 modes différents: 

<<<<<<< HEAD
- un mode solo 
- un mode assisté
- un mode 2 joueurs 1vs1
=======

# Joueur contre joueur
Chaque joueur joue en alternance pour tout les mots, et l'interface est effacée pour éviter la copie
## Scoring
Le scoring est fortement inspiré (pour le moment) sur le système suivant : https://wordlecup.io/ (sans gestion du temps pour le moment)
>>>>>>> f22d4581c892402dde2cc438b83af7d9a5b1e711

Le wordle est un jeu de lettre consistant à trouver un mot de la façon la plus rapide  en un nombre d'essais le plus réduit possible. 

#### Fonctionnement et règles

Le but du wordle est de deviner des mots de 5 lettres. Le nombre d'essai maximum est fixé à 6.  L'objectif est de trouvé le mot caché en fonction des informations reçus à chaque essai. À chaque mot choisi, les lettres ont un code couleur qui leur sont attribué. 🟩 pour les lettres bien placées, 🟧  pour les lettre existantes mais pas bien placées, et il y a aucun changement de couleur pour les lettres non présentes. Pour chaque essai, il est nécessaire de rentrer un mot de la langue française.

#### Le mode solo

Ce mode implémentera un wordle simple en suivant les régles régissant le jeu.

#### Le mode assisté : Outil d'aide

Ce mode présentera au joueur à chaque essai, un certain nombre de mot pouvant correspondre le plus au mot caché avec les informations actuels. Au départ, il est possible de proposer les mots avec la plus grande entropie.

#### Mode 1vs1

Chaque joueur joue en alternance pour chacun des mots, et l'interface est effacée entre 2 joueurs afin d'éviter la copie. 

#### Scoring

Le scoring est fortement inspiré sur le système suivant : https://wordlecup.io/. Le score pourra être calculé sans s'occuper de temps. Il est possible en supplément au travail de d'ajouter la gestion du temps.

#### Interface

L'interface du jeu avec l'utilisateur se fera sur la console du terminal et devra présenter un menu permettant de selectionner le mode désiré de jeu.

#### Implementation



## Lecture du dictionnaire et choix d'un mot (filtrage?)
Implémenter une fonction qui va lire un mot aléatoire depuis un fichier text `dictionnaire.txt`
## Menu de choix de mode de jeu (Solo, Multi, Auto)
Implémenter un menu afin de laisser l'utilisateur choisir un mode de jeu.

## Lecture Entrée Utilisateur
- Lire ce que l'utilisateur entre au clavier. 
- Verifier que le mot soit dans le dictionnaire avant de le valider.
- Si le mot est valide, comparer le mot entré au mot à trouver.
- Traiter les lettres **valides**, **bien placées** et **mal placées**. 

## Interface CLI.


## IA
Trouver un façon optimale de présenter une aide pour le joueur (basé sur les proba, entropie, Hamming ?)

# Tester son programme
1. Tester le choix du mot est bien aléatoire et bien filtré 
(Pas possible de choisir un mot trop grand ou trop petit)
(Difficile de tomber plusieurs fois sur le même mot)
(Pas de mot avec des espaces, **A VOIR**)

2. Tester qu'un mot qui n'est **PAS** dans le dictionnaire, ne puisse pas etre 



# LINKS
- https://towardsdatascience.com/information-theory-applied-to-wordle-b63b34a6538e
- https://www.youtube.com/watch?v=v68zYyaEmEA
- Liste de mots: https://www.freelang.com/dictionnaire/dic-francais.php