Exemplo n.º 1
0
 private void Vérifier_Click(object sender, EventArgs e)
 {
     if ((Control)sender != this)
     {
         if (grille.CheckSudoku())
         {
             string            message = "Voulez-vous relancer une partie ?";
             string            caption = "Vous avez terminé !";
             MessageBoxButtons buttons = MessageBoxButtons.YesNo;
             DialogResult      result;
             result = MessageBox.Show(message, caption, buttons);
             if (result == DialogResult.No)
             {
                 this.Close();
             }
             else
             {
                 grille = GenerateurGrille.ViderGrilleUnique(50);
                 this.initialisationLabel(grille);
             }
         }
         else
         {
             var mess   = "Le sudoku n'est pas juste ! Corrigez-le";
             var capt   = "Dommage !";
             var mb     = MessageBoxButtons.OK;
             var result = MessageBox.Show(mess, capt, mb);
         }
     }
 }
Exemplo n.º 2
0
      /// <summary>
      /// Méthode permettant de tester si une case d'une grille est nécessaire pour valider le principe d'unicité
      /// </summary>
      /// <param name="g"></param>
      /// <param name="position"></param>
      /// <returns></returns>
      private static bool TesterCase(Grille g, int position)
      {
          int compteurReussite = 0;
          int x = position / 9;
          int y = position % 9;

          for (int chiffre = 1; chiffre <= 9; chiffre++)
          {
              if (chiffre != g.GetCaseValue(x, y))
              {
                  Grille aTester = new Grille(g);
                  aTester.SetCaseValue(x, y, chiffre);
                  if (CaseValide(aTester, 0) && aTester.CheckSudoku())
                  {
                      compteurReussite += 1;
                      if (compteurReussite == 1)
                      {
                          return(false);
                      }
                  }
              }
          }
          if (compteurReussite == 0)
          {
              g.SetCaseValue(x, y, 0);
          }

          return(true);
      }