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); } } }
/// <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); }