Files
SAE21_2023/src/Grille.java

77 lines
2.3 KiB
Java
Raw Normal View History

public class Grille {
private int[] grille = null;
public Grille(){
this.grille = new int[81];
int x;
for (x=0 ; x < 81 ; x++) {
this.grille[x]=0; //remplie la grille de "0" -> "0" est un marqueur signifiant que la case est vide
}
}
public boolean case_vide(int position){
if (this.grille[position] == 0) {
return true;
} else {
return false;
}
}
public boolean est_valide(int position, int nbr){
/* check si le numéro se répète sur la colonne */
int colonne = position%9;
int id_test = colonne;
while (id_test != (72+colonne)) {
if ((this.grille[id_test]==nbr) && (id_test != position)) {
return false;
}
id_test += 9;
}
/* check si le numéro se répète sur la ligne */
int ligne = position/9;
id_test = ligne * 9;
while (id_test != ((ligne +1)*9)) {
if ((this.grille[id_test]==nbr) && (id_test != position)) {
return false;
}
id_test += 1;
}
/* check si le numéro se répète dans le carré auquel il appartient */
int Vcase = ligne/3; // permet de connaître la position du carré sur un axe vertical
int Hcase = colonne/3; // permet de connaître la position du carré sur un axe horizontal
int x,y;
for (x=0; x<3 ;x++) {
for (y=0; y<3 ;y++) {
id_test = Vcase*27+(y+Hcase*3)+(x*9);
if ((this.grille[id_test]==nbr) && (id_test != position)) {
return false;
}
}
}
return true;
}
public void remplir_case(int position,int nbr){
if ((nbr > 0) && (nbr < 10)){
this.grille[position] = nbr;
} else {
System.out.println("veuillez choisir un nombre entre 1 et 9");
}
}
/*public static void main(String[] args){
Grille grille = new Grille();
grille.remplir_case(3,59);
System.out.println(grille.case_vide(3));
}*/
}