From c226eeebae7bce56d2bf391ca5e02b7a095011dd Mon Sep 17 00:00:00 2001 From: ROGER Date: Fri, 3 Jan 2025 22:58:54 +0100 Subject: [PATCH] =?UTF-8?q?03/01/2025=20:=20Int=C3=A9gration=20d'un=20m?= =?UTF-8?q?=C3=A9canisme=20permettant=20de=20contr=C3=B4ler=20que=20le=20s?= =?UTF-8?q?ymbole=20choisi=20ne=20figure=20pas=20d=C3=A9j=C3=A0=20dans=20l?= =?UTF-8?q?a=20liste=20de=20symboles=20possibles.=20Permet=20d'=C3=A9viter?= =?UTF-8?q?=20les=20doublons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/sudoku/App.java | 5 +++ app/src/main/java/sudoku/Grille.java | 40 +++++++++++++++++++++-- app/src/test/java/sudoku/TestBloc.java | 4 +-- app/src/test/java/sudoku/TestColonne.java | 4 +-- 4 files changed, 46 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/sudoku/App.java b/app/src/main/java/sudoku/App.java index e9d84f3..f0b1a3d 100644 --- a/app/src/main/java/sudoku/App.java +++ b/app/src/main/java/sudoku/App.java @@ -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(); } } diff --git a/app/src/main/java/sudoku/Grille.java b/app/src/main/java/sudoku/Grille.java index 3f64a28..cac9712 100644 --- a/app/src/main/java/sudoku/Grille.java +++ b/app/src/main/java/sudoku/Grille.java @@ -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) { - symbolesPossibles.add(Symbole.of(input.charAt(0))); + 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()) { - symbolesPossibles.add(Symbole.of(input)); + 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; diff --git a/app/src/test/java/sudoku/TestBloc.java b/app/src/test/java/sudoku/TestBloc.java index 62ada44..72571a4 100644 --- a/app/src/test/java/sudoku/TestBloc.java +++ b/app/src/test/java/sudoku/TestBloc.java @@ -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(); diff --git a/app/src/test/java/sudoku/TestColonne.java b/app/src/test/java/sudoku/TestColonne.java index b88e15c..f400181 100644 --- a/app/src/test/java/sudoku/TestColonne.java +++ b/app/src/test/java/sudoku/TestColonne.java @@ -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();