/// <summary>
      /// Méthode permettant de vider la grille tout en respectant le principe d'unicité
      /// </summary>
      /// <returns>Une grille valide ayant une seule solution</returns>
      public static Grille ViderGrilleUnique(int nbEssais)
      {
          Grille grille = GenerateurGrille.Generation();

          grille.Solution = new Grille(grille);
          for (int i = 1; i < nbEssais; i++)
          {
              Random rnd = new Random();
              Thread.Sleep(10);
              int nb = rnd.Next(1, 81);
              TesterCase(grille, nb);
          }
          return(grille);
      }
      /// <summary>
      /// Permet de générer la grille et de mettre des cases vides
      /// </summary>
      /// <param name="nbCases">Nombre de cases à afficher</param>
      /// <returns>Une grille avec des 0 sur les cases à deviner</returns>
      public static Grille GenererGrilleAléatoire(int nbCases)
      {
          Grille grille = GenerateurGrille.Generation();

          for (int i = 1; i <= 81 - nbCases; i++)
          {
              int x;
              int y;
              do
              {
                  Random rnd = new Random();
                  x = rnd.Next(9);
                  y = rnd.Next(9);
              } while (grille.GetCaseValue(x, y) == 0);
              grille.SetCaseValue(x, y, 0);
              grille.GetCase(x, y).IsChecked = true;
          }
          return(grille);
      }