public FenetreDeJeu(IJeu jeu)
        {
            InitializeComponent();
            BringToFront();
            // initialisation de l'association
            this.jeu     = jeu;
            this.jeu.vue = this;

            // initialisation de l'IHM
            CreationEchiquier();

            // initialisation de l'état
            status = StatusPartie.Reset;

            // commencer une nouvelle partie
            CommencerPartie();
        }
        public void ActualiserPartie(StatusPartie status)
        {
            this.status = status;

            if (status.etat == EtatPartie.Pause)
            {
                return;
            }
            // arreter les chronomètres
            tempsBlancs.Stop();
            tempsNoirs.Stop();

            // demarrer le chronomètre du joueur actif
            if (status.etat != EtatPartie.Reset && status.etat != EtatPartie.Mat)
            {
                if (status.couleur == CouleurCamp.Blanche)
                {
                    tempsBlancs.Start();
                }
                else
                {
                    tempsNoirs.Start();
                }
            }

            // actualiser les etiquettes des chronomètres
            RenderClockLabels(status);
            // demarrer/arreter le timer de l'IHM
            if (status.etat == EtatPartie.Reset || status.etat == EtatPartie.Mat)
            {
                timer.Stop();
            }
            else
            {
                if (!timer.Enabled)
                {
                    timer.Start();
                }
            }
        }
        void RenderClockLabels(StatusPartie status)
        {
            if (status.etat != EtatPartie.Pause)
            {
                // selectionner l'etiquette du joueur actif
                Label lab1, lab2;
                if (status.couleur == CouleurCamp.Blanche)
                {
                    lab1 = lblWhiteClock;
                    lab2 = lblBlackClock;
                }
                else
                {
                    lab1 = lblBlackClock;
                    lab2 = lblWhiteClock;
                }

                // souligner le chronomètre du joueur actif
                lab1.BorderStyle = BorderStyle.FixedSingle;
                lab2.BorderStyle = BorderStyle.None;
                lab1.BackColor   = status.etat == EtatPartie.Mat ? Color.Red : (status.etat == EtatPartie.Echec ? Color.Orange : Color.LightGray);
                lab2.BackColor   = Color.FromName(KnownColor.Control.ToString());
            }
        }
        private void tbr_ButtonClick(object sender, ToolBarButtonClickEventArgs e)
        {
            switch (e.Button.Tag.ToString())
            {
            case "New":
                // création des carreaux pour les piéces capturées
                for (int i = 0; i < CAPTURES; i++)
                {
                    captures_blancs[i].Image = null;
                    captures_blancs[i].Refresh();
                    captures_blancs[i].Update();

                    captures_noirs[i].Image = null;
                    captures_noirs[i].Refresh();
                    captures_noirs[i].Update();
                }
                status = StatusPartie.Reset;
                CommencerPartie();
                break;

            case "Open":
                Open();
                break;

            case "Save":
                Save();
                break;

            case "UndoMove":
                Undo();
                break;

            case "RedoMove":
                Redo();
                break;

            case "UndoAllMoves":
                UndoAll();
                break;

            case "RedoAllMoves":
                RedoAll();
                break;

            case "FlipBoard":
                Flipboard();
                break;

            case "Think":
                // TODO
                break;

            case "MoveNow":

                // TODO
                break;

            case "ResumePlay":
                ResumePlay();
                break;

            case "PausePlay":
                PausePlay();
                break;
            }
        }