Ejemplo n.º 1
0
    def __init__(self, parent, n_pixels_par_case):
        # Nombre de lignes et de colonnes.
        self.n_lignes = 8
        self.n_colonnes = 8

        # Création d'une partie d'échec dans le Canvas
        self.partie = Partie()

        # Noms des lignes et des colonnes.
        self.chiffres_rangees = ['1', '2', '3', '4', '5', '6', '7', '8']
        self.lettres_colonnes = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

        # Nombre de pixels par case, variable.
        self.n_pixels_par_case = n_pixels_par_case

        # Appel du constructeur de la classe de base (Canvas).
        # La largeur et la hauteur sont déterminés en fonction du nombre de cases.
        super().__init__(parent,
                         width=self.n_lignes * n_pixels_par_case,
                         height=self.n_colonnes * self.n_pixels_par_case)

        # On utilise le dictionnaire de pièces intégré dans l'échiquier
        self.pieces = self.partie.echiquier.dictionnaire_pieces

        # Couleur d'arrière plan de l'échiquier (Avec le blanc)
        self.couleur_theme = 'grey'

        # On fait en sorte que le redimensionnement du canvas redimensionne son contenu. Cet événement étant également
        # généré lors de la création de la fenêtre, nous n'avons pas à dessiner les cases et les pièces dans le
        # constructeur.
        self.bind('<Configure>', self.redimensionner)
Ejemplo n.º 2
0
    def __init__(self):
        super().__init__()

        self.protocol("WM_DELETE_WINDOW", self.fermeture)

        # Nom de la fenêtre.
        self.title("Échiquier")

        #Initialisation d'une partie
        self.partie = Partie()

        # Truc pour le redimensionnement automatique des éléments de la fenêtre.
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        # Création du canvas échiquier.
        self.canvas_echiquier = CanvasEchiquier(self, 60, self.partie)
        self.canvas_echiquier.grid(sticky=NSEW)

        # Ajout d'une étiquette d'information.
        self.messages = Label(self)
        self.messages.grid()

        # Ajout d'une étiquette qui indique le joueur actif.
        self.messages_joueur_actif = Label(self)
        self.messages_joueur_actif['text'] = (
            "C'est au joueur blanc de commencer! ")
        self.messages_joueur_actif['foreground'] = 'blue'
        self.messages_joueur_actif.grid()

        # On lie un clic sur le CanvasEchiquier à une méthode.
        self.canvas_echiquier.bind('<Button-1>', self.selectionner)

        # Ajout d'un cadre pour regrouper les boutons
        frame_boutons = Frame(self)
        frame_boutons.grid(row=0, column=1)

        #Bouton pour annuler le dernier mouvement.
        bouton_dernier_mouvement = bouton_sauvegarder = Button(
            frame_boutons,
            text="Annuler le dernier mouvement",
            command=self.charger_dernier_mouvement)
        bouton_dernier_mouvement.grid()

        #Ajout des boutons pour sauvegarder et charger une partie.
        bouton_sauvegarder = Button(frame_boutons,
                                    text="Sauvegarder la partie",
                                    command=self.sauvegarder_partie)
        bouton_charger = Button(frame_boutons,
                                text="Charger la partie",
                                command=self.charger_partie)
        bouton_sauvegarder.grid()
        bouton_charger.grid()

        #Ajout d'un bouton pour commencer une nouvelle partie.
        bouton_nouvelle_partie = Button(frame_boutons,
                                        text="Nouvelle partie",
                                        command=self.nouvelle_partie)
        bouton_nouvelle_partie.grid()
Ejemplo n.º 3
0
    def nouvelle_partie(self):
        self.canvas_echiquier.partie = Partie()
        self.partie = self.canvas_echiquier.partie

        self.canvas_echiquier.rafraichir()

        self.mise_a_jour_message_joueur_actif()
        self.messages['text'] = ""
Ejemplo n.º 4
0
    def __init__(self,
                 parent,
                 n_pixels_par_case,
                 store_filename='annulerdeplacement.txt'):
        # Nombre de lignes et de colonnes.
        self.n_lignes = 8
        self.n_colonnes = 8

        # Noms des lignes et des colonnes.
        self.chiffres_rangees = ['1', '2', '3', '4', '5', '6', '7', '8']
        self.lettres_colonnes = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

        # Nombre de pixels par case, variable.
        self.n_pixels_par_case = n_pixels_par_case

        # Appel du constructeur de la classe de base (Canvas).
        # La largeur et la hauteur sont déterminés en fonction du nombre de cases.
        super().__init__(parent,
                         width=self.n_lignes * n_pixels_par_case,
                         height=self.n_colonnes * self.n_pixels_par_case)

        # On fait en sorte que le redimensionnement du canvas redimensionne son contenu. Cet événement étant également
        # généré lors de la création de la fenêtre, nous n'avons pas à dessiner les cases et les pièces dans le
        # constructeur.
        self.bind('<Configure>', self.redimensionner)

        # Importation de Échequier et partie et Fenetre
        self.echequier = Echiquier()
        self.partie = Partie()
        self.fenetre = Fenetre

        # Dictionnaire contenant les pièces. Vous devinerez, si vous réutilisez cette classe dans votre TP4,
        # qu'il fandra adapter ce code pour plutôt utiliser la classe Echiquier.
        self.pieces = self.echequier.dictionnaire_pieces

        # Les variables nécessaires pour la fonction déplacement
        self.selectionner = 0
        self.case_source = ""
        self.case_cible = ""

        # Déterminer le gagnant
        self.gagnant_noir = False
        self.gagnant_blanc = False

        # Enregistrement des coups
        self.texte = ""

        # Fichier text annuler déplacement
        self.store_filename = os.path.join(BASE_DIR, store_filename)

        self.t = 0
Ejemplo n.º 5
0
    def __init__(self,
                 store_filename='partie1.bin',
                 store_filename2='partie2.bin',
                 store_filename3="deplacements1.txt",
                 store_filename4='deplacements2.txt'):
        super().__init__()

        self.title("Échiquier")

        # Background de la fenêtre.
        self.config(bg="AntiqueWhite1")

        # La position sélectionnée.
        self.position_selectionnee = None

        # Truc pour le redimensionnement automatique des éléments de la fenêtre.
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        # Création du canvas échiquier.
        self.canvas_echiquier = CanvasEchiquier(self, 60)
        self.canvas_echiquier.grid(sticky=NSEW)

        # Ajout d'une étiquette d'information.
        self.messages = Label(self)
        self.messages.grid()

        # Ajout d'un message box
        self.message_alerte = messagebox

        # On lie un clic sur le CanvasEchiquier à une méthode.
        self.canvas_echiquier.bind('<Button-1>', self.canvas_echiquier.jouer)

        # Les variables nécessaires pour la fonction déplacement
        self.selectionner = 0
        self.case_source = ""
        self.case_cible = ""
        self.echiquier = Echiquier()

        # Frame unique pour les autres fonctions
        self.cadre_fonctions = Frame(self, relief="groove")
        self.cadre_fonctions.grid(row=0, column=1, padx=10, pady=10, sticky=S)
        self.cadre_fonctions.config(bg="AntiqueWhite1")
        self.cadre_fonctions_partie = Frame(self, relief="groove")
        self.cadre_fonctions_partie.config(bg="AntiqueWhite1")
        self.cadre_fonctions_partie.grid(row=0,
                                         column=1,
                                         padx=10,
                                         pady=10,
                                         sticky=N)

        # On importe les fonctions de parties
        self.partie = Partie()

        # L'emplacement du file
        self.store_filename = os.path.join(BASE_DIR, store_filename)
        self.store_filename2 = os.path.join(BASE_DIR, store_filename2)
        self.store_filename3 = os.path.join(BASE_DIR, store_filename3)
        self.store_filename4 = os.path.join(BASE_DIR, store_filename4)

        # Pour savoir nous sommes actuellement dans quel partie
        self.partie_actuel = 0

        # Label compteur
        self.m = 2
        self.s = 0
        self.compteur = StringVar()
        self.compteur.set(str(self.m) + ":" + str(self.s))
        self.lbl_compteur1 = Label(self.cadre_fonctions_partie,
                                   textvariable=self.compteur,
                                   bd=4,
                                   relief="groove",
                                   height=2).grid(row=0,
                                                  column=0,
                                                  sticky=NSEW,
                                                  padx=10,
                                                  pady=10)

        # Label joueur actif
        self.joueur_actif = StringVar()
        self.joueur_actif.set("C'est le tour du joueur  {}.".format(
            self.canvas_echiquier.partie.joueur_actif))
        self.lbl_joueur_actif = Label(self.cadre_fonctions_partie,
                                      textvariable=self.joueur_actif,
                                      relief="groove",
                                      bg="green",
                                      height=2).grid(row=1,
                                                     column=0,
                                                     sticky=NSEW,
                                                     padx=10,
                                                     pady=10)

        # Label Menu de partie
        self.lbl_options_de_partie = Label(self.cadre_fonctions_partie, text="Menu", relief="sunken",
                                           font="Arial 13 bold").grid \
            (row=2, column=0, sticky=NSEW, padx=10, pady=10)

        # Bouton Nouvelle Partie
        self.btn_nouvelle_partie = Button(
            self.cadre_fonctions_partie,
            text="Nouvelle partie",
            command=self.alerte_nouvelle_partie).grid(row=3,
                                                      column=0,
                                                      sticky=NSEW)

        # Bouton Fin du tour
        self.btn_fin_du_tour = Button(self.cadre_fonctions_partie,
                                      bg="yellow",
                                      text="Fin du tour",
                                      relief="groove",
                                      height=2,
                                      command=self.fin_du_tour).grid(
                                          row=2,
                                          column=0,
                                          sticky=NSEW,
                                          padx=10,
                                          pady=10)

        # Bouton Sauvegarder
        self.btn_Sauvegarder = Button(
            self.cadre_fonctions_partie,
            text="Sauvegarder la partie",
            command=self.alerte_sauvegarder_partie).grid(row=4,
                                                         column=0,
                                                         sticky=NSEW)

        # Bouton Charger
        self.btn_Charger = Button(self.cadre_fonctions_partie,
                                  text="Charger une partie",
                                  command=self.alerte_charger_partie).grid(
                                      row=5, column=0, sticky=NSEW)

        # Boutton Quitter
        self.btn_quitter = Button(self.cadre_fonctions_partie,
                                  text="Quitter",
                                  command=self.quit).grid(row=6,
                                                          column=0,
                                                          sticky=NSEW)

        # Label options de partie
        self.lbl_options_de_partie = Label(self.cadre_fonctions, text="Options", relief="sunken",
                                           font="Arial 13 bold").grid \
            (row=1, column=0, sticky=NSEW, padx=10, pady=10)

        # Boutton revoir la partie

        self.btn_revoir_partie = Button(
            self.cadre_fonctions,
            text="Revoir une partie",
            command=self.alert_revoir_une_partie).grid(row=7,
                                                       column=0,
                                                       sticky=NSEW)

        # Bouton annuler deplacement
        self.btn_console = Button(self.cadre_fonctions,
                                  text="Annuler le dernier mouvement",
                                  command=self.annuler_deplacement).grid(
                                      row=8, column=0, sticky=NSEW)

        # Bouton pour afficher les déplacements effectués
        self.btn_console = Button(
            self.cadre_fonctions,
            text="Afficher les déplacements effectués",
            command=self.afficher_liste_deplacements).grid(row=9,
                                                           column=0,
                                                           sticky=NSEW)

        # Bouton pour lire les règlements du jeux
        self.btn_reglement = Button(
            self.cadre_fonctions,
            text="Voir les règlements du jeux en ligne",
            command=self.openweb).grid(row=10, column=0, sticky=NSEW)
        # Bouton changer thème:
        self.btn_changer_theme = Button(self.cadre_fonctions,
                                        text="Changer le thème",
                                        command=self.changer_theme).grid(
                                            row=11, column=0, sticky=NSEW)
Ejemplo n.º 6
0
# -*- coding: utf-8 -*-
"""Module principal du package pychecs2. C'est ce module que nous allons exécuter pour démarrer votre jeu.
Importez les modules nécessaires et démarrez votre programme à partir d'ici. Le code fourni n'est qu'à titre d'exemple.

"""
from pychecs2.echecs.partie import Partie
from pychecs2.interface.exemple import Fenetre

if __name__ == '__main__':
    # Création d'une instance de Partie.
    p = Partie()

    # Affichage de l'échiquier dans cette partie.
    # print(p.echiquier)

    # Création et affichage d'une fenêtre (aucun lien avec la partie ci-haut).
    Fenetre().mainloop()

    #test push
Ejemplo n.º 7
0
    def __init__(self):
        super().__init__()

        # Nom de la fenêtre.
        self.title("Chess")

        # quelques attributs à utiliser plustard
        self.position_source = None
        self.option_indice = 0
        self.protocol(
            'WM_DELETE_WINDOW', self.demander
        )  # cette instruction fait appel a une fonction si le joueur
        # click sur le bouton fermé de la fenetre tk

        # Création du canvas échiquier.
        self.canvas_echiquier = CanvasEchiquier(self, 50)
        self.canvas_echiquier.grid(padx=0,
                                   pady=0,
                                   sticky=NSEW,
                                   row=0,
                                   column=0,
                                   rowspan=2)

        # Redimensionnement automatique du canvas.
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        # Label pour les infos sur la partie, voir les paramètres 'text=...' pour avoir plus de détails sur chaque sous-fram
        self.frame_infos = LabelFrame(self,
                                      borderwidth=3,
                                      relief=RIDGE,
                                      text="Information sur la partie")
        self.frame_infos.grid(row=0, column=1, sticky=N)

        self.mon_label_info = Label(self.frame_infos,
                                    font=("DejaVu Sans", 16),
                                    text="C'est au tour du joueur blanc")
        self.mon_label_info.grid(columnspan=4)

        self.prises_blanc = Label(self.frame_infos,
                                  borderwidth=2,
                                  relief=RIDGE,
                                  font=("DejaVu Sans", 8),
                                  text="Prises du\njoueur blanc")
        self.prises_blanc.grid(row=1, column=0, sticky=N + W)

        self.prises_noir = Label(self.frame_infos,
                                 borderwidth=2,
                                 relief=RIDGE,
                                 font=("DejaVu Sans", 8),
                                 text="Prises du\njoueur noir")
        self.prises_noir.grid(row=1, column=1, sticky=N + E)

        self.depla_blanc = Label(self.frame_infos,
                                 borderwidth=2,
                                 relief=RIDGE,
                                 font=("DejaVu Sans", 8),
                                 text="Liste des déplacements\njoueur blanc")
        self.depla_blanc.grid(row=1, column=2, sticky=N + W)

        self.depla_noir = Label(self.frame_infos,
                                borderwidth=2,
                                relief=RIDGE,
                                font=("DejaVu Sans", 8),
                                text="Liste des déplacements\njoueur noir")
        self.depla_noir.grid(row=1, column=3, sticky=N + E)

        # Label pour le menu (contenant des bouton) de la partie, voir les paramètres 'text=...' pour avoir plus de
        # détails sur cache bouton: chaque bouton envoi vers une fonction voir les paramètres 'command=...'
        self.frame_menu = LabelFrame(self,
                                     borderwidth=3,
                                     relief=RIDGE,
                                     text="Menu de la partie")
        self.frame_menu.grid(row=1, column=1, sticky=NSEW, padx=10, pady=0)

        self.nouvelle = Button(self.frame_menu,
                               text="Nouvelle partie",
                               command=self.nouvelle_partie)
        self.nouvelle.grid(sticky=NSEW, row=0, column=0)

        self.sauv = Button(self.frame_menu,
                           text="Sauvegarder la partie",
                           command=self.save)
        self.sauv.grid(sticky=NSEW, row=1, column=0)

        self.load = Button(self.frame_menu,
                           text="Charger une partie",
                           command=self.load)
        self.load.grid(sticky=NSEW, row=2, column=0)

        self.infos = Button(self.frame_menu,
                            text="Informations sur le jeu",
                            command=self.infos_et_règles)
        self.infos.grid(sticky=NSEW, row=3, column=0)

        self.annul = Button(self.frame_menu,
                            text="Annuler le dernier déplacement",
                            command=self.annuler)
        self.annul.grid(sticky=NSEW, row=4, column=0)

        self.o = Button(self.frame_menu,
                        text="Passez la main à l'ordi",
                        command=self.ordi)
        self.o.grid(sticky=N + E + W, row=0, column=1)

        self.o_h_a = Checkbutton(
            self.frame_menu,
            text="Activer cette case puis faites un\nclick droit sur la piece "
            "voulu\npour voir les possibilitées\nqui s'offrent à "
            "vous",
            command=self.activer_indice)
        self.o_h_a.grid(sticky=NSEW, row=1, column=1, rowspan=3)

        self.partie = Partie(self.canvas_echiquier.echiquier)

        # Ajout d'une étiquette d'information.
        self.messages = Label(self, font=("DejaVu Sans", 16))
        self.messages.grid(row=2, columnspan=2)

        # On lie un clic sur le CanvasEchiquier à une méthode.
        self.canvas_echiquier.bind('<Button-3>', self.option_hint)
        self.canvas_echiquier.bind('<Button-1>', self.selectionner_source)
        self.canvas_echiquier.bind('<ButtonRelease-1>',
                                   self.selectionner_cible)
Ejemplo n.º 8
0
    def __init__(self):
        super().__init__()

        # Nom de la fenêtre.
        self.title("Échiquier")

        # Creation d'une nouvelle partie
        self.partie = Partie()
        self.sauvegarder("Revenir")

        # La position sélectionnée.
        self.position_selectionnee = None

        # Truc pour le redimensionnement automatique des éléments de la fenêtre.
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        # Création du canvas échiquier.
        self.canvas_echiquier = CanvasEchiquier(self, 60, self.partie)
        self.canvas_echiquier.grid(sticky=NSEW)

        # Frame bouton Sauvegare/NG/coup précédent
        self.frame_sauvegarde = Frame(self)
        self.frame_sauvegarde.grid(row=1)

        # label invisible
        self.label_invisible1 = Label(self.frame_sauvegarde)
        self.label_invisible1.grid(row=0)

        # Creation d'un bouton nouvelle partie
        self.boutton_nouvelle_partie = Button(self.frame_sauvegarde,
                                              text='Nouvelle Partie',
                                              command=self.nouvelle_partie)
        self.boutton_nouvelle_partie.grid()

        # label invisible
        self.label_invisible2 = Label(self.frame_sauvegarde)
        self.label_invisible2.grid(row=1, column=2)

        # Creation d'un bouton précédant
        self.boutton_revenir = Button(self.frame_sauvegarde,
                                      text='Coup précédant',
                                      command=self.revenir)
        self.boutton_revenir.grid(row=1, column=3)

        # label invisible
        self.label_invisible2 = Label(self.frame_sauvegarde)
        self.label_invisible2.grid(row=1, column=4)

        # Sauvegarder
        self.boutton_sauvegarde = Button(self.frame_sauvegarde,
                                         text='Sauvegarder',
                                         command=self.faire_sauvegarder)
        self.boutton_sauvegarde.grid(row=1, column=5)

        # label invisible
        self.label_invisible2 = Label(self.frame_sauvegarde)
        self.label_invisible2.grid(row=1, column=6)

        # Charger
        self.bouton_charger = Button(self.frame_sauvegarde,
                                     text='     Charger     ',
                                     command=self.faire_charger)
        self.bouton_charger.grid(row=1, column=7)

        # Frame joueur actif
        self.frame_info = LabelFrame(self, text="Joueur actif")
        self.frame_info.grid(row=0, column=1, sticky=NW)

        self.label_temporaire = Label(self.frame_info,
                                      text="C'est le tour au joueur " +
                                      self.partie.joueur_actif,
                                      background='snow')
        self.label_temporaire.grid(row=0, sticky=N, column=0)

        # label invisible
        self.label_invisible = Label(self.frame_info)
        self.label_invisible.grid(row=1, column=0, padx=100)

        # label theme
        self.label_theme = Label(self.frame_info, text="Thème:")
        self.label_theme.grid(row=2, sticky=W)

        # Changer de thème
        self.valeur = StringVar()
        self.boite_theme = ttk.Combobox(self.frame_info,
                                        textvariable=self.valeur,
                                        state="readonly")
        self.boite_theme["values"] = [
            "Classique", "Noel", "Saint-Valentin", "Doritos-MountainDew"
        ]
        self.boite_theme.current(0)
        self.boite_theme.grid(row=3)
        self.boite_theme.bind("<<ComboboxSelected>>", self.changer_theme)

        # label invisible
        self.label_invisible = Label(self.frame_info)
        self.label_invisible.grid(row=4, column=0)

        # label invisible
        self.label_invisible = Label(self.frame_info)
        self.label_invisible.grid(row=5, column=0)

        # label invisible
        self.label_invisible = Label(self.frame_info)
        self.label_invisible.grid(row=6, column=0)

        # label invisible
        self.label_invisible = Label(self.frame_info)
        self.label_invisible.grid(row=7, column=0)

        # label invisible
        self.label_invisible = Label(self.frame_info)
        self.label_invisible.grid(row=8, column=0)

        # bouton Reglement
        self.bouton_reglement = Button(self.frame_info,
                                       text='Règlements',
                                       command=self.montre_reglement)
        self.bouton_reglement.grid(row=9, column=0)

        # label invisible
        self.label_invisible = Label(self.frame_info)
        self.label_invisible.grid(row=10, column=0)

        # bouton Troll
        self.bouton_troll = Button(self.frame_info,
                                   text='Ne pas cliquer :)',
                                   background='red',
                                   command=self.troll)
        self.bouton_troll.grid(row=11, column=0)

        # label invisible
        self.label_invisible = Label(self.frame_info)
        self.label_invisible.grid(row=12, column=0, pady=58)

        # label note
        self.label_note = Label(self.frame_info,
                                text='*Note:',
                                background='yellow')
        self.label_note.grid(row=13, column=0, sticky=NW)
        self.label_clic1 = Label(self.frame_info,
                                 text='Clique gauche = Sélectionner pièce')
        self.label_clic1.grid(row=14, column=0, sticky=NW)
        self.label_clic2 = Label(self.frame_info,
                                 text='Clique droit = Déposer pièce')
        self.label_clic2.grid(row=15, column=0, sticky=NW)

        # Ajout d'une étiquette d'information.
        self.messages = Label(self)
        self.messages.grid()

        # On lie un clic sur le CanvasEchiquier à une méthode.
        self.canvas_echiquier.bind('<Button-1>', self.selectionner)
        self.canvas_echiquier.bind('<Button-3>', self.deposer)
Ejemplo n.º 9
0
    def __init__(self):
        super().__init__()
        self.estTermine = False
        self.estSauvegarde = False
        self.listemovements = []
        self.listepiecesnoirs = []
        self.listepiecesblanches = []
        self.chrono_actif = False

        # On redéfinie ce qui se passe lors de la fermeture du  fichier.
        self.protocol("WM_DELETE_WINDOW", self.demandesauvegarde)

        # Nom de la fenêtre.
        self.title("Échiquier")

        self.partie = Partie()

        # La position sélectionnée.
        self.position_selectionnee = None

        # Truc pour le redimensionnement automatique des éléments de la fenêtre.
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        # Création du canvas échiquier.
        self.canvas_echiquier = CanvasEchiquier(self, 60, self.partie)
        self.canvas_echiquier.grid(row=0, column=0, sticky=NSEW)

        # Création du menu
        self.menubar = BarreMenu(self, self.canvas_echiquier)
        self.config(menu=self.menubar)

        # Ajout d'une étiquette d'information.
        self.lblMessages = Label(self)
        self.lblMessages.config(font=("Courier", 18))
        self.lblMessages.grid()

        self.lblMessagejoueuractif = Label(self)
        self.lblMessagejoueuractif['text'] = 'Tour du joueur blanc'
        self.lblMessagejoueuractif.config(font=("Courier", 18))
        self.lblMessagejoueuractif.grid()

        # Listes des pièces perdues par chaque joueurs
        self.lblpiecesblanches = Label(self, anchor='w')
        self.lblpiecesblanches.grid(row=4, column=0)
        self.lblpiecesblanches.config(font=("Courier", 14))
        self.lblpiecesblanches['text'] = 'Pièces noires perdues: '

        self.lblpiecesnoires = Label(self, anchor='w')
        self.lblpiecesnoires.config(font=("Courier", 14))
        self.lblpiecesnoires.grid(row=4, column=1)
        self.lblpiecesnoires['text'] = 'Pièces blanches perdues: '

        # Création d'une zone de texte pour l'affichage des déplacements.
        self.afficher_deplacement = False

        self.txtListe = Text(self)
        self.txtListe.grid(row=0, column=1, sticky=NSEW)

        self.lblListe = Label(self)
        self.lblListe['text'] = 'La liste des mouvements'
        self.lblListe.grid(row=1, column=1, sticky=NSEW)

        # On lie un clic sur le CanvasEchiquier à une méthode.
        self.canvas_echiquier.bind('<Button-1>', self.selectionner)

        # chrono
        self.chrono = Label(text="")
        self.chrono.grid(row=5, column=0, sticky=NSEW)
        self.minute = 0
        self.second = 0
        self.color_chrono = "blue"
Ejemplo n.º 10
0
    def __init__(self):
        super().__init__()

        # Nom de la fenêtre.
        self.title("Échiquier")

        self.partie = Partie()

        #Bouton X (pour quitter)
        self.protocol('WM_DELETE_WINDOW', self.message_quitter)

        # Truc pour le redimensionnement automatique des éléments de la fenêtre.
        self.grid_columnconfigure(0, weight=1)
        self.grid_rowconfigure(0, weight=1)

        # Création du canvas échiquier.
        self.canvas_echiquier = CanvasEchiquier(self, 60, self.partie)
        self.canvas_echiquier.grid(sticky=NSEW)

        ##########################################################
        #                                                        #
        #                    VISUEL                              #
        #                                                        #
        ##########################################################
        # Étiquette d'information et de sélection des pièces
        self.messages = Label(self)
        self.messages['foreground'] = 'black'
        self.messages['text'] = "Bienvenue au super jeux d'échec!"
        self.messages.grid(row=1, sticky='w')

        # # Étiquette d'information sur le joueur courant
        self.messages1 = Label(self)
        self.messages1[
            'text'] = "Au tour du joueur: " + self.partie.joueur_actif.upper()
        self.messages1.grid(row=2, sticky='w')
        self.messages1['foreground'] = 'blue'

        # Création du frame a droite du canevas
        self.monFramePrincipal = Frame(self)
        self.monFramePrincipal.grid(row=0, column=1, sticky='n')

        # FRAME a DROITE: Fenetre pour afficher la liste des déplacements effectués
        self.mon_frame1 = LabelFrame(self.monFramePrincipal,
                                     text="Les déplacements ",
                                     borderwidth=2,
                                     relief=RIDGE,
                                     padx=5,
                                     pady=5)
        self.mon_frame1.grid(row=0, column=0, sticky='n')
        self.yScroll = Scrollbar(self.mon_frame1, orient=VERTICAL)
        self.yScroll.grid(row=0, column=1, sticky=N + S)
        #small_font = font(size=5)
        self.liste1 = Listbox(self.mon_frame1, yscrollcommand=self.yScroll.set)
        self.liste1 = Listbox(self.mon_frame1)
        self.liste1.grid(row=0, column=0)
        self.yScroll['command'] = self.liste1.yview

        # Creation d'un espace pour mettre les 2 fenetres de pièces mangées (un sous-Frame)
        self.monSousFrame = Frame(self.monFramePrincipal)
        self.monSousFrame.grid(row=1, column=0, sticky='n')

        # FRAME a DROITE: Fenetre pour afficher les pieces blanches mangées
        self.mon_frame2 = LabelFrame(self.monSousFrame,
                                     text="Les blancs\nmangés ",
                                     borderwidth=2,
                                     relief=RIDGE,
                                     padx=5,
                                     pady=5,
                                     width=7)
        self.mon_frame2.grid(row=0, column=0, sticky='n')
        self.yScroll = Scrollbar(self.mon_frame2, orient=VERTICAL)
        self.yScroll.grid(row=0, column=1, sticky=N + S)
        self.liste2 = Listbox(self.mon_frame2, yscrollcommand=self.yScroll.set)
        self.liste2 = Listbox(self.mon_frame2, width=7)
        self.liste2.grid(row=0, column=0)
        self.yScroll['command'] = self.liste2.yview

        # FRAME a DROITE: Fenetre pour afficher les pieces noires mangées
        self.mon_frame2 = LabelFrame(self.monSousFrame,
                                     text="Les noirs\nmangés ",
                                     borderwidth=2,
                                     relief=RIDGE,
                                     padx=5,
                                     pady=5,
                                     width=7)
        self.mon_frame2.grid(row=0, column=1, sticky='n')
        self.yScroll = Scrollbar(self.mon_frame2, orient=VERTICAL)
        self.yScroll.grid(row=0, column=1, sticky=N + S)
        self.liste3 = Listbox(self.mon_frame2, yscrollcommand=self.yScroll.set)
        self.liste3 = Listbox(self.mon_frame2, width=7)
        self.liste3.grid(row=0, column=0)
        self.yScroll['command'] = self.liste3.yview

        # FRAME a DROITE: Bouton pour se connecter au site web des intrusctions d'echec
        self.mon_frame3 = Frame(self.monFramePrincipal,
                                borderwidth=2,
                                relief=RIDGE,
                                padx=5,
                                pady=5)
        self.mon_frame3.grid(row=2, column=0, sticky='n')
        but1 = Button(self.mon_frame3,
                      text="Lien web pour accéder\naux règles du jeux!",
                      command=self.ouvrirURL).grid(row=0, column=0)

        # Frame pour les options de jeux en bas de l'échiquier
        self.mon_frame = LabelFrame(self,
                                    text="Options de partie",
                                    borderwidth=2,
                                    relief=RIDGE,
                                    padx=5,
                                    pady=5)
        self.mon_frame.grid(row=4, column=0, sticky='w')
        bouton_sauver = Button(self.mon_frame,
                               text="Sauvegarder",
                               command=self.sauvergarder).grid(row=0, column=0)
        bouton_charge = Button(self.mon_frame,
                               text="Charger",
                               command=self.message_charger).grid(row=0,
                                                                  column=1)
        bouton_demarrer = Button(self.mon_frame,
                                 text="Redémarrage",
                                 command=self.message_reinitialiser).grid(
                                     row=0, column=2)
        bouton_annuler = Button(self.mon_frame,
                                text="Annuler dernier mouvement",
                                command=self.annulerDernierMouvement).grid(
                                    row=0, column=3)

        # On lie un clic sur le CanvasEchiquier à une méthode.
        self.canvas_echiquier.bind('<Button-1>', self.selectionner)

        self.piece_a_deplacer = None
        self.position_piece_a_deplacer = None

        #Pour que x et y soient accessibles dans selectionner ET dans creer_carre_selection
        self.x = 1
        self.y = 1