package sudokuka; import javax.swing.JFrame; import javax.swing.JTextField; import javax.swing.JOptionPane; import java.util.ArrayList; public class Resolution { public int[] values; public int[] solution; /** Creates a new instance of Resolution */ public Resolution(JTextField[][] grilleTT) { values = new int[81]; solution = new int[81]; int compteur=0; for (int i=0;i<9;i++) { for (int j=0;j<9;j++) { try { this.values[compteur]=Integer.parseInt(grilleTT[i][j].getText()); compteur++; } catch(Exception e) { this.values[compteur] = 0; compteur++; } } } } protected void afficher (int [] vecteur) { for (int i=0; i<81; i++) { System.out.print (vecteur[i]); } } protected int index_debut_ligne (int nombre) { return (nombre - (nombre%9)); } protected int index_debut_colonne (int nombre) { return(nombre%9); } protected int index_debut_bloc (int nombre) { return((27*(ligne(nombre)/3))+(3*(colonne(nombre)/3))); } protected int ligne (int nombre) { return (nombre/9); } protected int colonne (int nombre) { return(nombre%9); } protected boolean ok_ligne (int[] grille, int cible, int debut) { int temp1; temp1 = index_debut_ligne(debut); for (int i=temp1;i0) monArray.add(i); } return (monArray); } protected void solution (int[] grille, JFrame fenetre) { int index=0; int valeur=0; ArrayList monArray = new ArrayList(); monArray = index_fixes(grille); for (int i=0; i<81;i++) { this.solution[i]=this.values[i]; } while (index < 81) { index=suivant(grille,index); valeur++; System.out.println("La valeur d'index :" + index + " Test de la valeur : " + valeur); // this.afficher(this.values); if (ok(grille,valeur,index)) { grille[index]=valeur; valeur=0; } else { if (valeur==9) { System.out.println("La valeur d'index A :" + index + " Test de la valeur : " + valeur); valeur=0; grille[index]=0; index=index-1; while (grille[index]==9) { valeur=0; grille[index]=0; index=index-1; } System.out.println("La valeur d'index B :" + index + " Test de la valeur : " + valeur); while (valeurDansArray(index,monArray)) { index=index-1; System.out.println("La valeur d'index C :" + index + " Test de la valeur : " + valeur); } if (index<0) { JOptionPane.showMessageDialog(fenetre, "Aucune solution possible", "Pas de solution", JOptionPane.ERROR_MESSAGE); return; } System.out.println("La valeur grille[index] :" + grille[index]); if (grille[index]<9) { System.out.println("La valeur d'index D :" + index + " Test de la valeur : " + valeur); valeur=grille[index]; grille[index]=0; System.out.println("La valeur d'index E :" + index + " Test de la valeur : " + valeur); System.out.println("Je sors par le break"); // break; } } } } } private boolean valeurDansArray(int valeur, ArrayList aarray) { for (int i=0; i