refactor: enhance code documentation and remove unnecessary greeting outputs in tests

This commit is contained in:
2025-02-09 15:57:52 +01:00
parent 86fe45c358
commit 7968d5fede
28 changed files with 440 additions and 131 deletions

View File

@@ -6,8 +6,11 @@ import java.util.Objects;
import java.util.Scanner;
import sudoku.core.Console;
import sudoku.gui.ColorGenerator;
import sudoku.core.GenerateurCouleur;
/**
* Classe Grille permettant de créer une grille de sudoku.
*/
public class Grille {
private final int taille;
private final Case[][] cases;
@@ -40,6 +43,12 @@ public class Grille {
}
}
/**
* Méthode permettant de mettre à jour la référence au multidoku
*
* @param multidoku : multidoku
* @see Multidoku
*/
public void setMultidoku(Multidoku multidoku) {
this.multidoku = multidoku;
}
@@ -51,20 +60,34 @@ public class Grille {
*/
private void initColors() {
// nombre de couleurs = nombre de blocs (pour sudoku classique)
List<ColorGenerator.Color> colors = ColorGenerator.greatScheme(taille);
List<GenerateurCouleur.Couleur> colors = GenerateurCouleur.paletteCouleurEtendue(taille);
generatedColors = new ArrayList<>();
for (ColorGenerator.Color color : colors) {
for (GenerateurCouleur.Couleur color : colors) {
generatedColors.add(convertToAnsi(color));
}
}
private String convertToAnsi(ColorGenerator.Color color) {
/**
* Convertit une couleur en format ANSI pour l'affichage en console.
*
* @param color : couleur à convertir
* @return couleur convertie
*/
private String convertToAnsi(GenerateurCouleur.Couleur color) {
int r = Math.round(color.r * 255);
int g = Math.round(color.g * 255);
int b = Math.round(color.b * 255);
return String.format("\u001B[38;2;%d;%d;%dm", r, g, b);
}
/**
* Méthode permettant de définir un symbole dans une case en fonction de sa
* ligne, de sa colonne et du symbole
*
* @param ligne : coordonnée de la ligne
* @param colonne : coordonnée de la colonne
* @param symbole : symbole à placer
*/
public void setCase(int ligne, int colonne, Symbole symbole) {
try {
if (symbole != null && !symbolesPossibles.contains(symbole)) {
@@ -175,9 +198,10 @@ public class Grille {
}
/**
* Crée des blocs rectangulaires automatiquement à partir de la taille de la
* grille.
* Ne fonctionne pas pour les grilles dont la taille est un carré parfait.
* Crée des blocs rectangulaires.
*
* @param blocHeight : hauteur du bloc
* @param blocWidth : largeur du bloc
*/
public void creerBlocRectangulaire(int blocHeight, int blocWidth) {
if (taille % blocHeight != 0 || taille % blocWidth != 0) {
@@ -208,12 +232,23 @@ public class Grille {
}
}
/**
* Méthode permettant d'afficher les blocs de la grille à l'aide de la méthode
* toString de la classe Bloc.
*/
public void printBlocs() {
for (Bloc bloc : blocs) {
System.out.println(bloc.toString());
}
}
/**
* Méthode utilisée pour le menu princial.
* Méthode permettant de choisir le type de symbole à utiliser pour la grille
*
* @param scanner : scanner pour lire l'entrée utilisateur
* @return int : choix de l'utilisateur
*/
public static int choisirTypeSymbole(Scanner scanner) {
while (true) {
System.out.println("Choisissez le type de symbole :");
@@ -235,6 +270,14 @@ public class Grille {
}
}
/**
* Méthode utilisée pour le menu principal.
* Méthode permettant de demander à l'utilisateur de saisir les symboles
* possibles pour la grille.
*
* @param choix : choix de l'utilisateur
* @param scanner : scanner pour lire l'entrée utilisateur
*/
public void askSetSymbolesPossibles(int choix, Scanner scanner) {
try {
for (int i = 0; i < taille; i++) {