#  Jeu du Pendu: solution étape 1

from tkinter import *
from random import *
from datetime import date

### Classe principale de l'application ###
#----------------------------------------#

class Application(Tk):

    def __init__(self):
        Tk.__init__(self)
        self.title("Jeu du Pendu")
        self.configure(bg="#2C2F10")

        # pseudo du joueur:
        self.pseudo = ""

        # Création de la zone de texte présentant le jeu:
        Label(self, text="""Entrez une lettre grâce au clavier ci-dessous.\n
Si elle se trouve dans le mot secret, elle sera affichée.\n
Sinon, la sentence se rapprochera...""",
              font=("Comic sans Ms", 14), justify=CENTER, bg='#2C2F10',
              fg="#F0E39E").grid(row = 1, column = 1)

        # Création du clavier:
        self.clavier = Clavier(self, command = self.proposer)
        self.clavier.grid(row = 2, column = 1, padx=5, pady=5)

        # Création de la zone de texte recevant le mot caché:
        self.etatMot = Label(self, text="Appuyez sur l'image pour commencer",
                             font=("Comic sans Ms", 14), fg='red', bg="#cbd888")
        self.etatMot.grid(row=3, column = 1, pady=5)

        # Création du Canevas contenant l'image:
        self.can = Canvas(self, width=250, height=350, bg='#2C2F10', bd=0)
        self.can.grid(row = 1, column = 2, rowspan=3, columnspan=3, padx=10, pady=10)
        self.can.bind("<Button-1>", self.start_it)

        # Affichage de la photo initiale:
        self.photo = PhotoImage(file='annexes/images/intro.gif')
        self.imagePendu = self.can.create_image(125, 175, image=self.photo)

        # Création des boutons:
        Button(self, text="Login", bg="#A65400", fg="white", activebackground="#BF7830",
               activeforeground="black", font=("Comic sans Ms", 10, 'bold'),
               command=self.login).grid(row=4, column=2, pady=5)

        Button(self, text="Scores", bg="#A65400", fg="white", activebackground="#BF7830",
               activeforeground="black", font=("Comic sans Ms", 10, 'bold'),
               command=self.score).grid(row=4, column=3, pady=5)

        Button(self, text="Quitter", bg="#A65400", fg="white", activebackground="#BF7830",
               activeforeground="black", font=("Comic sans Ms", 10, 'bold'),
               command=self.quit).grid(row=4, column=4, pady=5)


        # Création du titre du jeu:
        self.titre = self.can.create_text(125, 20, text="Jeu du Pendu",
                                          font=("Comic sans Ms", 20, 'bold'), fill="red")

        # Création de la zone de texte affichant des messages à l'utilisateur
        self.message = self.can.create_text(125, 310, font=("Comic sans Ms", 12, 'bold'), justify = CENTER,
                                       fill='white')

        # Interrupteur de partie:
        self.jeuTermine = True

    ##################################################
    ### Méthodes nécessaires au déroulement du jeu ###
    ##################################################

    def proposer(self, lettre):

        print(lettre)
        
        
    

    ###########################################
    ### Méthodes gestionnaires d'événements ###
    ###########################################

    def start_it(self, event):

        if self.jeuTermine:

            # état du jeu:
            self.jeuTermine = False

            # affichage dans la console:
            print("Commencement du jeu")


                    
    def login(self):
        "Instancie une fenetre d'inscription"
        Inscription(self, bg = "#2C2F10")

    def score(self):
        "Instancie une fenetre avec les 3 meilleurs scores"
        BestScore(self, bg = "#2C2F10")


### Classes subordonnées de l'application ###
#-------------------------------------------#

class Clavier(Frame):
    "Clavier d'entrée des lettres"

    def __init__(self, boss, command=None):
        
        Frame.__init__(self, boss, bd=1, bg="#cbd888")

        # clavier centré au milieu du cadre:
        i = 0
        lettre = "A"
        colonne = [0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,2,3,4,5,6,7]
        while i < 26:
            ln = 1 + (i//10)
            col = colonne[i]
            Button(self, text=lettre, bg="#A65400", fg="white", activebackground="#BF7830",
                   activeforeground="black", font=("Comic sans Ms", 10, 'bold'),
                   command=lambda arg=lettre: command(arg)).grid(row=ln, column=col, pady=3, padx=2)
            lettre = chr(ord(lettre) + 1)
            i += 1

class Inscription(Toplevel):
    "Fenetre satellite permettant à l'utilisateur de s'inscrire"
    

class BestScore(Toplevel):
    "Fenetre satellite permettant de visualiser les meilleurs scores"
     
            
#### Partie principale du programme ###
#-------------------------------------#
monApp = Application()          # instanciation du jeu
monApp.mainloop()               # lancement du réceptionnaire d'événements
monApp.destroy()                # destruction du jeu lors de la fermeture finale des fenetres   
