import os
import random

# Ecrire votre propre répertoire de travail ci-dessous

os.chdir("/Users/francoisrauscher/Desktop/jeuPendu") 

#---------------------------------------------------------------------
#------------- Ecriture dans un fichier texte ------------------------
#---------------------------------------------------------------------

fichier = open("mots.txt","w", encoding = "utf-8") 
fichier.write("victoria\nhameçon\nqualéfaction\nboudinés\nréversible\nessaimage\n")
fichier.close()

#---------------------------------------------------------------------
#-------------- Lecture du fichier texte -----------------------------
#---------------------------------------------------------------------

fichier = open("mots.txt", "r", encoding = "utf-8")
L = fichier.readlines()
fichier.close()



# Supprimer le \n final de chaque mot et les ranger dans 
# la liste listeMotsSecrets

NOMBRE_MOTS = len(L) # Nombre de mots secrets

listeMotsSecrets = []
for i in range(NOMBRE_MOTS) :
    chTamp = L[i].replace("\n","")
    listeMotsSecrets.append(chTamp)
    
#--------------------------------------------------------------------------
#----------- CONSTANTES DU PROGRAMME --------------------------------------
#--------------------------------------------------------------------------

ERREUR_MAX = 10
CARACT_PERMIS = "abcdefghijklmnopqrstuvwxyzéèçàù"

#-------------------------------------------------------------------------

def entree_lettre() :
         
     while (True) : 
        ch = input("\nVeuillez choisir une lettre ou un mot : ")
        longueur = len(ch)
        
        if (longueur == 0) : # Pas de saisie
            print("Désolé mais vous devez choisir une lettre ou un mot ...\n")
        elif (longueur == 1) : # Un seul caractère entré. On vérifie la validité
            ch = ch.lower()
            if ch in CARACT_PERMIS :
                return ch                
        else :          # Un mot complet entré, on le renvoie tel quel
            return ch
            
        
#-------------------------------------------------------------------
#--------------- DEBUT DU PROGRAMME --------------------------------
#-------------------------------------------------------------------
 
print("Bonjour et bienvenu dans le jeu du pendu !")

ancn = [-1]
n = -1

ok = True
while (ok) :              # Boucle du jeu. Tant que ok == True, on continue
    
    while(n in ancn) :    # Choix aléatoire du mot secret
        n = random.randint(0,NOMBRE_MOTS-1) 

    ancn.append(n) # Pour ne pas choisir le même n deux fois de suite
    motSecret = listeMotsSecrets[n] 

    print("Le mot secret contient ", len(motSecret), " lettres")
    print("Vous avez droit à ", ERREUR_MAX, " erreurs\n")

    val = input("Veuillez appuyer sur une touche du clavier ...")

    nombreErreurs = 0
    ListeLettresFausses = []
    ListeCible = ["-" for c in motSecret]
        
    chaine_affichee = "".join(ListeCible) # Création de la chaine affichée "-----"
    Termine = False
        
    while (not Termine) :
        
        carChoisi = entree_lettre()
        if (carChoisi == motSecret) : # On a directement entré le mot secret
                Termine = True
                print("\nFélicitations !")
                print("Vous avez trouvé le mot secret : ", motSecret)
        
        elif (carChoisi in motSecret) : # Caractère choisi présent dans motSecret
            for i in range(len(motSecret)) :
                if ( carChoisi == motSecret[i] ) :
                    ListeCible[i] = carChoisi
            chaine_affichee = "".join(ListeCible)
            if ( chaine_affichee == motSecret ) :
                Termine = True
                print("\nFélicitations !")
                print("Vous avez trouvé le mot secret : ", motSecret)
            else : 
                print(chaine_affichee)
                print("Liste des lettres absentes : ", ListeLettresFausses)
                print("Il vous reste :", ERREUR_MAX - nombreErreurs, " essais\n")
        
        else : # Le caractère choisi n'est pas dans motSecret
                            
            if (len(carChoisi) >= 2) : # Un mot a été entré et ce n'est pas le bon
                nombreErreurs += 2
                print("Le mot ", carChoisi, " n'est pas le mot secret")
            else :
                nombreErreurs += 1
                if (carChoisi not in ListeLettresFausses) :
                    ListeLettresFausses.append(carChoisi)
                    print("La lettre ", carChoisi, " n'est pas dans le mot secret")
                    print("Liste des lettres absentes : ", ListeLettresFausses)
                    
            if (nombreErreurs >= ERREUR_MAX) :
                Termine = True
                print("\nHélas ! Vous avez perdu !")
                print("Le mot secret était : ", motSecret)
            else:  # On peut encore jouer
                print("\n",chaine_affichee)
                
                print("Il vous reste :", ERREUR_MAX - nombreErreurs, " essais\n")
    
    
    val = input("Voulez-vous rejouer (o = oui) ? ")
    if ( (val != "o") or (len(ancn) == NOMBRE_MOTS+1) ) : # Ne veux plus jouer ou bien
                                                          # tous les mots ont été joués
        ok = False

#--------------------------------------------------------------------------
#----------------------- FIN DU PROGRAMME ---------------------------------
#--------------------------------------------------------------------------
