refactor: update ContrainteBloc to handle rectangle bloc, update tests, and improve code comments

This commit is contained in:
2025-02-09 11:47:02 +01:00
parent ea868017ee
commit 86fe45c358
27 changed files with 356 additions and 251 deletions

View File

@@ -18,9 +18,11 @@ public class Grille {
private List<String> generatedColors;
/**
* Constructeur permettant d'initialiser une griller grace aux paramètres suivants :
* @param taille
* @param sudoku
* Constructeur permettant d'initialiser une grille grace aux paramètres
* suivants :
*
* @param taille : taille de la grille
* @param sudoku : sudoku
*/
public Grille(int taille, Sudoku sudoku) {
this.taille = taille;
@@ -85,31 +87,36 @@ public class Grille {
}
/**
* Méthode permettant de connaitre la valeur d'une case (symbole) grace aux paramètres suivants :
* @param ligne
* @param colonne
* @return
* Méthode permettant de retourner une case en fonction de sa ligne et de sa
* colonne
*
* @param ligne : coordonnée de la ligne
* @param colonne : coordonnée de la colonne
* @return Case
*/
public Case getCase(int ligne, int colonne) {
return cases[ligne][colonne];
}
/**
* Crée un bloc personnalisé à partir des positions spécifiées.
* La couleur du bloc est choisie de façon cyclique dans la palette générée.
* Méthode permettant de créer un bloc personnalisé en fonction des positions
* passées en paramètre <br />
* <br />
*
* Exemple d'utilisation :
* sudoku.getGrille().creerBlocPersonnalise(Arrays.asList(
* new int[] { 0, 0 },
* new int[] { 0, 1 },
* new int[] { 0, 2 },
* new int[] { 1, 0 },
* new int[] { 1, 1 },
* new int[] { 1, 2 },
* new int[] { 2, 0 },
* new int[] { 2, 1 },
* new int[] { 2, 2 }
* ));
* Exemple de positions pour un sudoku 9x9 : <br />
* sudoku.getGrille().creerBlocPersonnalise(Arrays.asList( <br />
* new int[] { 0, 0 }, <br />
* new int[] { 0, 1 }, <br />
* new int[] { 0, 2 }, <br />
* new int[] { 1, 0 }, <br />
* new int[] { 1, 1 }, <br />
* new int[] { 1, 2 }, <br />
* new int[] { 2, 0 }, <br />
* new int[] { 2, 1 }, <br />
* new int[] { 2, 2 } <br />
* );
*
* @param positions : liste de positions pour le bloc personnalisé <br />
*/
public void creerBlocPersonnalise(List<int[]> positions) {
try {
@@ -290,8 +297,12 @@ public class Grille {
}
/**
* Méthode permettant de retourner la liste des symboles possible. Cela dépend de ce qu'a saisit l'utilisateur dans la méthode askSetSymbolesPossibles
* @return
* Méthode permettant de retourner la liste des symboles possible.
* Cela dépend de ce que saisit l'utilisateur dans la méthode
* askSetSymbolesPossibles
*
* @return List la liste des symboles possibles
* @see Symbole
*/
public List<Symbole> getSymbolesPossibles() {
return symbolesPossibles;
@@ -299,7 +310,8 @@ public class Grille {
/**
* Méthode permettant d'ajouter un symbole à la liste des symboles possibles
* @param symbolesPossibles
*
* @param symbolesPossibles : liste des symboles possibles
*/
public void setSymbolesPossibles(ArrayList<Symbole> symbolesPossibles) {
this.symbolesPossibles = symbolesPossibles;
@@ -318,7 +330,8 @@ public class Grille {
/**
* Méthode permettant de retourner la taille de la grille
* @return
*
* @return taille
*/
public int getTaille() {
return taille;
@@ -330,15 +343,15 @@ public class Grille {
return bloc;
}
}
return null; // Ne devrait jamais arriver si la grille est bien construite
return null; // Ne dois jamais arriver si la grille est bien construite
}
/**
* Vérifie si toutes les contraintes sont respectées.
* S'arrête dès qu'une contrainte n'est pas respectée.
*
* @param contraintes
* @return
* @param contraintes : liste des contraintes à vérifier
* @return true si toutes les contraintes sont respectées, false sinon
*/
public boolean verifierToutesContraintes(List<Contrainte> contraintes) {
// Vérifier chaque case de la grille
@@ -362,8 +375,10 @@ public class Grille {
}
/**
* Méthode permettant de retourner la longueure du symbole le plus long pour dimensionner corectement les cases et la grille
* @return
* Méthode permettant de retourner la longueur du symbole le plus long pour
* dimensionner correctement les cases et la grille en console
*
* @return int
*/
public int getLongueurSymboleLePlusLong() {
int max = 0;
@@ -377,7 +392,8 @@ public class Grille {
/**
* Méthode permettant d'afficher la grille
* @return
*
* @return String : représentation de la grille
*/
@Override
public String toString() {