refactor: improve code comments and app menu
This commit is contained in:
@@ -63,7 +63,7 @@ public class Sudoku {
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
// ETAPE 1 : TAILLE GRILLE
|
||||
System.out.println("ETAPE 1 : Choisir la taille de la grille");
|
||||
int tailleGrille = setTailleGrille(scanner); // récpère la taille de la grille
|
||||
int tailleGrille = setTailleGrille(scanner); // récupère la taille de la grille
|
||||
Sudoku sudoku = new Sudoku(tailleGrille);
|
||||
// ETAPE 2 : SYMBOLE POSSIBLE
|
||||
System.out.println("ETAPE 2 : Choisir les symboles possibles");
|
||||
@@ -140,8 +140,6 @@ public class Sudoku {
|
||||
System.out.println("Voulez-vous résoudre le sudoku ? (O/N)");
|
||||
String choix = scanner.nextLine();
|
||||
if (choix.equalsIgnoreCase("O")) {
|
||||
System.out.println("Résolution du sudoku.");
|
||||
// resolutionSudoku(sudoku);
|
||||
System.out.println("Voulez-vous afficher les étapes de la résolution ? (O/N)");
|
||||
String choixAffichageEtapes = scanner.nextLine();
|
||||
|
||||
@@ -176,47 +174,48 @@ public class Sudoku {
|
||||
}
|
||||
|
||||
private static void setValeursGrille(Sudoku sudoku, Scanner scanner, int tailleGrille, int typeSymbole) {
|
||||
// Etude de la taille de la grille pour choisir le type de génération
|
||||
if (carreParfait(tailleGrille)) {
|
||||
System.out.println(tailleGrille + " est un carré parfait.");
|
||||
sudoku.getGrille().creerBlocCarre();
|
||||
} else {
|
||||
while (true) {
|
||||
while (true) {
|
||||
try {
|
||||
System.out.println("Veuillez faire votre choix");
|
||||
System.out.println("1 : Entrer les blocs manuellement");
|
||||
System.out.println("2 : Entrer les blocs à l'aide de la longueur et de la largeur");
|
||||
System.out.println("3 : Générer des blocs carrés");
|
||||
|
||||
int choixGenerationBloc = Integer.parseInt(scanner.nextLine());
|
||||
|
||||
switch (choixGenerationBloc) {
|
||||
case 1:
|
||||
// Entrer les blocs manuellement
|
||||
System.out.println("Entrez les blocs manuellement.");
|
||||
creationBlocManuel(sudoku, scanner, tailleGrille);
|
||||
break;
|
||||
case 2:
|
||||
// Entrer les blocs à l'aide de la longueur et de la largeur
|
||||
boolean validDimensions = false;
|
||||
while (!validDimensions) {
|
||||
try {
|
||||
System.out.println("Entrez les blocs à l'aide de la longueur et de la largeur.");
|
||||
System.out.println("Entrez la longueur du bloc : ");
|
||||
int longueurBloc = Integer.parseInt(scanner.nextLine());
|
||||
System.out.println("Entrez la largeur du bloc :");
|
||||
int largeurBloc = Integer.parseInt(scanner.nextLine());
|
||||
sudoku.getGrille().creerBlocRectangulaire(longueurBloc, largeurBloc);
|
||||
validDimensions = true; // Sortir de la boucle si aucune exception n'est lancée
|
||||
} catch (IllegalArgumentException e) {
|
||||
Console.errorln("Erreur : " + e.getMessage());
|
||||
Console.errorln("Veuillez entrer des dimensions valides.");
|
||||
}
|
||||
try {
|
||||
System.out.println("Entrez les blocs à l'aide de la longueur et de la largeur.");
|
||||
System.out.println("Entrez la longueur du bloc : ");
|
||||
int longueurBloc = Integer.parseInt(scanner.nextLine());
|
||||
System.out.println("Entrez la largeur du bloc :");
|
||||
int largeurBloc = Integer.parseInt(scanner.nextLine());
|
||||
sudoku.getGrille().creerBlocRectangulaire(longueurBloc, largeurBloc);
|
||||
break;
|
||||
} catch (IllegalArgumentException e) {
|
||||
Console.errorln("Erreur : " + e.getMessage());
|
||||
continue;
|
||||
}
|
||||
case 3:
|
||||
try {
|
||||
sudoku.getGrille().creerBlocCarre();
|
||||
break;
|
||||
} catch (IllegalArgumentException e) {
|
||||
Console.errorln("Erreur : " + e.getMessage());
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Console.errorln("Choix invalide.");
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
break; // Sort de la boucle si la création des blocs a réussi
|
||||
} catch (NumberFormatException e) {
|
||||
Console.errorln("Erreur : Veuillez entrer un nombre valide.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -278,20 +277,20 @@ public class Sudoku {
|
||||
try {
|
||||
Symbole s;
|
||||
switch (typeSymbole) {
|
||||
case 1:
|
||||
// Entiers
|
||||
case 1: // Entiers
|
||||
if (!Symbole.of(symbole).isInt()) {
|
||||
throw new IllegalArgumentException("Veuillez entrer un nombre valide.");
|
||||
}
|
||||
s = Symbole.of(Integer.parseInt(symbole));
|
||||
break;
|
||||
case 2:
|
||||
// Lettres
|
||||
if (symbole.length() == 1 && Character.isLetter(symbole.charAt(0))) {
|
||||
s = Symbole.of(symbole.charAt(0));
|
||||
} else {
|
||||
case 2: // Lettres
|
||||
Symbole tempSymbole = Symbole.of(symbole);
|
||||
if (!tempSymbole.isLetter()) {
|
||||
throw new IllegalArgumentException("Veuillez entrer une seule lettre.");
|
||||
}
|
||||
s = tempSymbole;
|
||||
break;
|
||||
case 3:
|
||||
// Chaînes de caractères
|
||||
case 3: // Chaînes de caractères
|
||||
s = Symbole.of(symbole);
|
||||
break;
|
||||
default:
|
||||
@@ -308,14 +307,6 @@ public class Sudoku {
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean carreParfait(int nombre) {
|
||||
if (nombre < 0) {
|
||||
return false;
|
||||
}
|
||||
int racine = (int) Math.sqrt(nombre);
|
||||
return racine * racine == nombre;
|
||||
}
|
||||
|
||||
private static void creationBlocManuel(Sudoku sudoku, Scanner scanner, int tailleGrille) {
|
||||
int nombreBloc = tailleGrille; // Nombre de blocs dans la grille
|
||||
|
||||
|
||||
Reference in New Issue
Block a user