/// <summary>
        /// Crée les affichages des pièces
        /// </summary>
        private void InitialiserAffichagePieces()
        {
            Coordonnee position;
            Rectangle  imageAffichage;

            GrillePieces = new List <List <Rectangle> >();

            for (int i = 0; i < GrilleJeu.TAILLE_GRILLE_JEU; i++)
            {
                GrillePieces.Add(new List <Rectangle>());

                for (int j = 0; j < GrilleJeu.TAILLE_GRILLE_JEU; j++)
                {
                    position = new Coordonnee(i, j);

                    if (GrillePartie.EstCaseOccupee(position))
                    {
                        imageAffichage = CreerAffichagePiece(GrillePartie.ObtenirPiece(position));

                        Grid.SetColumn(imageAffichage, i);
                        Grid.SetRow(imageAffichage, j);

                        grdPartie.Children.Add(imageAffichage);

                        GrillePieces[i].Add(imageAffichage);
                    }
                    else
                    {
                        GrillePieces[i].Add(null);
                    }
                }
            }
        }
        /// <summary>
        /// S'exécute lorsque l'on clique sur une case.
        /// </summary>
        /// <param name="sender">Objet appelant</param>
        /// <param name="e">Arguments</param>
        private void ResoudreSelectionCase(object sender, MouseButtonEventArgs e)
        {
            Rectangle caseSelectionnee = (Rectangle)sender;

            Coordonnee pointSelectionne = new Coordonnee(Grid.GetColumn(caseSelectionnee), Grid.GetRow(caseSelectionnee));
            Coordonnee pointActif;

            ReponseDeplacement reponse;

            // Tour du joueur
            if (TourJeu == CouleurJoueurs.CouleurJoueur)
            {
                if (grdPartie.Children.Contains(SelectionActive))
                {
                    pointActif = new Coordonnee(Grid.GetColumn(SelectionActive), Grid.GetRow(SelectionActive));

                    if (pointSelectionne == pointActif)
                    {
                        grdPartie.Children.Remove(SelectionActive);
                    }
                    else
                    {
                        reponse = ExecuterCoup(pointActif, pointSelectionne);

                        if (reponse.DeplacementFait)
                        {
                            grdPartie.Children.Remove(SelectionActive);
                        }
                    }
                }
                else
                {
                    if (GrillePartie.EstCaseOccupee(pointSelectionne) &&
                        GrillePartie.ObtenirCouleurPiece(pointSelectionne) == CouleurJoueurs.CouleurJoueur)
                    {
                        Grid.SetColumn(SelectionActive, pointSelectionne.X);
                        Grid.SetRow(SelectionActive, pointSelectionne.Y);

                        grdPartie.Children.Add(SelectionActive);
                    }
                }
            }
        }
        /// <summary>
        /// Détermine si le joueur peut jouer (s'il a des coups disponibles)
        /// </summary>
        /// <returns>Si le joueur peut jouer</returns>
        private bool JoueurACoupsPermis()
        {
            List <CoupCote> listeCoups = new List <CoupCote>();
            Coordonnee      pointDepart, pointCible;

            for (int i = 0; i < GrilleJeu.TAILLE_GRILLE_JEU; i++)
            {
                for (int j = 0; j < GrilleJeu.TAILLE_GRILLE_JEU; j++)
                {
                    pointDepart = new Coordonnee(i, j);

                    if (GrillePartie.EstCaseOccupee(pointDepart) &&
                        GrillePartie.ObtenirCouleurPiece(pointDepart) == CouleurJoueurs.CouleurJoueur)
                    {
                        if (GrillePartie.ObtenirPiece(pointDepart) is Eclaireur)
                        {
                            // Valider les coups vers la gauche.
                            for (int k = pointDepart.X; k >= 0; k--)
                            {
                                pointCible = new Coordonnee(k, pointDepart.Y);
                                if (GrillePartie.EstDeplacementPermis(pointDepart, pointCible))
                                {
                                    listeCoups.Add(new CoupCote(pointDepart, pointCible, GrillePartie, CouleurJoueurs.CouleurJoueur));
                                }
                            }
                            // Valider les coups vers le haut.
                            for (int k = pointDepart.Y; k >= 0; k--)
                            {
                                pointCible = new Coordonnee(pointDepart.X, k);
                                if (GrillePartie.EstDeplacementPermis(pointDepart, pointCible))
                                {
                                    listeCoups.Add(new CoupCote(pointDepart, pointCible, GrillePartie, CouleurJoueurs.CouleurJoueur));
                                }
                            }
                            // Valider les coups vers la droite.
                            for (int k = pointDepart.X; k < GrilleJeu.TAILLE_GRILLE_JEU; k++)
                            {
                                pointCible = new Coordonnee(k, pointDepart.Y);
                                if (GrillePartie.EstDeplacementPermis(pointDepart, pointCible))
                                {
                                    listeCoups.Add(new CoupCote(pointDepart, pointCible, GrillePartie, CouleurJoueurs.CouleurJoueur));
                                }
                            }
                            // Valider les coups vers le bas.
                            for (int k = pointDepart.Y; k < GrilleJeu.TAILLE_GRILLE_JEU; k++)
                            {
                                pointCible = new Coordonnee(k, pointDepart.Y);
                                if (GrillePartie.EstDeplacementPermis(pointDepart, pointCible))
                                {
                                    listeCoups.Add(new CoupCote(pointDepart, pointCible, GrillePartie, CouleurJoueurs.CouleurJoueur));
                                }
                            }
                        }
                        else
                        {
                            // Valider un coup vers la gauche.
                            pointCible = new Coordonnee(pointDepart.X - 1, pointDepart.Y);
                            if (GrillePartie.EstDeplacementPermis(pointDepart, pointCible))
                            {
                                listeCoups.Add(new CoupCote(pointDepart, pointCible, GrillePartie, CouleurJoueurs.CouleurJoueur));
                            }

                            // Valider un coup vers l'avant.
                            pointCible = new Coordonnee(pointDepart.X, pointDepart.Y - 1);
                            if (GrillePartie.EstDeplacementPermis(pointDepart, pointCible))
                            {
                                listeCoups.Add(new CoupCote(pointDepart, pointCible, GrillePartie, CouleurJoueurs.CouleurJoueur));
                            }

                            // Valider un coup vers la droite.
                            pointCible = new Coordonnee(pointDepart.X + 1, pointDepart.Y);
                            if (GrillePartie.EstDeplacementPermis(pointDepart, pointCible))
                            {
                                listeCoups.Add(new CoupCote(pointDepart, pointCible, GrillePartie, CouleurJoueurs.CouleurJoueur));
                            }

                            // Valider un coup vers l'arrière.
                            pointCible = new Coordonnee(pointDepart.X, pointDepart.Y + 1);
                            if (GrillePartie.EstDeplacementPermis(pointDepart, pointCible))
                            {
                                listeCoups.Add(new CoupCote(pointDepart, pointCible, GrillePartie, CouleurJoueurs.CouleurJoueur));
                            }
                        }
                    }
                }
            }

            return(listeCoups.Count > 0);
        }