/// <summary>
        /// Calcule la cote du coup
        /// </summary>
        public void CalculerCote()
        {
            if (PieceCible != null)
            {
                if (PieceCible.EstVisible) // Si la cible est visible, on la classe selon le poid de la pièce,
                {                          // positif si on gagne et négatif si on perd
                    if (PieceAttaquant.GetType() == PieceCible.GetType())
                    {
                        Cote = 0;
                    }
                    else
                    {
                        if (DeterminerSiGagne(PieceAttaquant, PieceCible))
                        {
                            Cote = LIST_IMPORTANCE_PIECES[PieceCible.GetType()];
                        }
                        else
                        {
                            Cote = -LIST_IMPORTANCE_PIECES[PieceAttaquant.GetType()];
                        }
                    }
                }
                else // Si elle est invisible, on calcule la probabilité que ce soit de chaque type
                {
                    int nombrePieces = Jeu.CalculerNombrePieces(CouleurIA);
                    List <Tuple <Type, double> > probabilites = new List <Tuple <Type, double> >
                    {
                        new Tuple <Type, double> (
                            typeof(Marechal),
                            (2 * Jeu.CalculerNombrePieces(typeof(Marechal), CouleurIA) - 1) / (double)nombrePieces
                            ),
                        new Tuple <Type, double> (
                            typeof(General),
                            (2 * Jeu.CalculerNombrePieces(typeof(General), CouleurIA) - 1) / (double)nombrePieces
                            ),
                        new Tuple <Type, double> (
                            typeof(Colonel),
                            (2 * Jeu.CalculerNombrePieces(typeof(Colonel), CouleurIA) - 2) / (double)nombrePieces
                            ),
                        new Tuple <Type, double> (
                            typeof(Commandant),
                            (2 * Jeu.CalculerNombrePieces(typeof(Commandant), CouleurIA) - 3) / (double)nombrePieces
                            ),
                        new Tuple <Type, double> (
                            typeof(Capitaine),
                            (2 * Jeu.CalculerNombrePieces(typeof(Capitaine), CouleurIA) - 4) / (double)nombrePieces
                            ),
                        new Tuple <Type, double> (
                            typeof(Lieutenant),
                            (2 * Jeu.CalculerNombrePieces(typeof(Lieutenant), CouleurIA) - 4) / (double)nombrePieces
                            ),
                        new Tuple <Type, double> (
                            typeof(Sergent),
                            (2 * Jeu.CalculerNombrePieces(typeof(Sergent), CouleurIA) - 4) / (double)nombrePieces
                            ),
                        new Tuple <Type, double> (
                            typeof(Demineur),
                            (2 * Jeu.CalculerNombrePieces(typeof(Demineur), CouleurIA) - 5) / (double)nombrePieces
                            ),
                        new Tuple <Type, double> (
                            typeof(Eclaireur),
                            (2 * Jeu.CalculerNombrePieces(typeof(Eclaireur), CouleurIA) - 8) / (double)nombrePieces
                            ),
                        new Tuple <Type, double> (
                            typeof(Espion),
                            (2 * Jeu.CalculerNombrePieces(typeof(Espion), CouleurIA) - 1) / (double)nombrePieces
                            ),
                        new Tuple <Type, double> (
                            typeof(Drapeau),
                            (2 * Jeu.CalculerNombrePieces(typeof(Drapeau), CouleurIA) - 1) / (double)nombrePieces
                            ),
                        new Tuple <Type, double> (
                            typeof(Bombe),
                            (2 * Jeu.CalculerNombrePieces(typeof(Bombe), CouleurIA) - 6) / (double)nombrePieces
                            )
                    };

                    // On classe les résultats en ordre décroissant
                    probabilites.Sort((a, b) => { return((int)((b.Item2 - a.Item2) * 100)); });

                    List <Tuple <Type, double> > meilleursProbabilites = new List <Tuple <Type, double> >();

                    bool   bEstPareil = true;
                    double dScore     = probabilites[0].Item2;
                    for (int i = 0; i < probabilites.Count && bEstPareil; i++)
                    {
                        if (probabilites[i].Item2 != dScore)
                        {
                            bEstPareil = false;
                        }
                        else
                        {
                            meilleursProbabilites.Add(probabilites[i]);
                        }
                    }

                    // On choisi une pièce qui a le résultat le plus grand
                    Random rnd = new Random(DateTime.Now.Millisecond);

                    Type typePiece = meilleursProbabilites[rnd.Next(meilleursProbabilites.Count)].Item1;

                    Piece pieceCibleTemporaire = (Piece)Activator.CreateInstance(typePiece, new object[] { CouleurIA });

                    // Et on applique la logique de cote avec le candidat possible
                    if (PieceAttaquant.GetType() == pieceCibleTemporaire.GetType())
                    {
                        Cote = 0;
                    }
                    else
                    {
                        if (DeterminerSiGagne(PieceAttaquant, pieceCibleTemporaire))
                        {
                            Cote = LIST_IMPORTANCE_PIECES[pieceCibleTemporaire.GetType()];
                        }
                        else
                        {
                            Cote = -LIST_IMPORTANCE_PIECES[PieceAttaquant.GetType()];
                        }
                    }
                }
            }
        }