03/01/2025 : Intégration d'un mécanisme permettant de contrôler que le symbole choisi ne figure pas déjà dans la liste de symboles possibles. Permet d'éviter les doublons

This commit is contained in:
ROGER
2025-01-03 22:58:54 +01:00
parent b553fd2be9
commit c226eeebae
4 changed files with 46 additions and 7 deletions

View File

@@ -46,7 +46,12 @@ public class App {
sudoku.getGrille().printSymbolesPossibles();
//Création d'un second sudoku
System.out.println("Création d'un second SUDOKU");
Sudoku sudoku2 = new Sudoku(9);
sudoku2.getGrille().askSetSymbolesPossibles();
System.out.println("Symboles possibles :");
sudoku2.getGrille().printSymbolesPossibles();
}
}

View File

@@ -2,6 +2,7 @@ package sudoku;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Scanner;
import sudoku.core.Console;
@@ -128,6 +129,14 @@ public class Grille {
switch (choix) {
case 1: // Nombres
try {
Symbole intTemp = Symbole.of(Integer.parseInt(input));
//Evaluation de la du caractère qui vient d'être saisit
for (Symbole symbole : symbolesPossibles) {
if (Objects.equals(intTemp.toString(), symbole.toString())){
Console.errorln("Ce symbole existe déja, veuillez entrer un autre symbole");
throw new NumberFormatException("Ce symbole existe déja");
}
}
symbolesPossibles.add(Symbole.of(Integer.parseInt(input)));
} catch (NumberFormatException e) {
Console.errorln("Veuillez entrer un nombre valide");
@@ -137,7 +146,20 @@ public class Grille {
case 2: // Caractères
if (input.length() == 1) {
try {
Symbole charTemp = Symbole.of(input);
//Evaluation de la du caractère qui vient d'être saisit
for (Symbole symbole : symbolesPossibles) {
if (Objects.equals(charTemp.toString(), symbole.toString())) {
Console.errorln("Ce symbole existe déja, veuillez entrer un autre symbole");
throw new NumberFormatException("Ce symbole existe déja");
}
}
symbolesPossibles.add(Symbole.of(input.charAt(0)));
}catch (NumberFormatException e) {
Console.errorln("Veuillez entrer un caractère valide");
i--;
}
} else {
Console.errorln("Veuillez entrer un seul caractère");
i--;
@@ -146,13 +168,25 @@ public class Grille {
case 3: // Texte/Emoji
if (!input.isEmpty()) {
try {
Symbole textTemp = Symbole.of(input);
//Evaluation de la du caractère qui vient d'être saisit
for (Symbole symbole : symbolesPossibles) {
if (Objects.equals(textTemp.toString(), symbole.toString())) {
Console.errorln("Ce symbole existe déja, veuillez entrer un autre symbole");
throw new NumberFormatException("Ce symbole existe déja");
}
}
symbolesPossibles.add(Symbole.of(input));
}catch (NumberFormatException e) {
Console.errorln("Veuillez entrer un texte ou un emoji valide");
i--;
}
} else {
Console.errorln("Le symbole ne peut pas être vide");
i--;
}
break;
default:
Console.errorln("Type non supporté");
return;

View File

@@ -32,8 +32,8 @@ public class TestBloc {
sudoku.getGrille().setCase(5, 6, Symbole.of(7));
sudoku.getGrille().setCase(0, 7, Symbole.of(8));
sudoku.getGrille().setCase(4, 8, Symbole.of(9));
//doublon ligne
sudoku.getGrille().setCase(0, 1, Symbole.of(1));
//doublon bloc
sudoku.getGrille().setCase(1, 1, Symbole.of(1));
sudoku.getGrille().createSquareBlocs();

View File

@@ -34,8 +34,8 @@ public class TestColonne {
sudoku.getGrille().setCase(5, 6, Symbole.of(7));
sudoku.getGrille().setCase(0, 7, Symbole.of(8));
sudoku.getGrille().setCase(4, 8, Symbole.of(9));
//doublon ligne
sudoku.getGrille().setCase(0, 0, Symbole.of(1));
//doublon colonne
sudoku.getGrille().setCase(4, 0, Symbole.of(1));
sudoku.getGrille().createSquareBlocs();