From 4190bf15d8011c0985e8b2628947b6028bc854d9 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Wed, 29 Jan 2025 11:47:18 +0100 Subject: [PATCH] difficulties --- app/src/main/java/gui/menu/SoloMenu.java | 19 ++-------------- .../java/sudoku/structure/Difficulty.java | 18 +++++++++++++++ .../java/sudoku/structure/SudokuFactory.java | 22 ++----------------- 3 files changed, 22 insertions(+), 37 deletions(-) create mode 100644 app/src/main/java/sudoku/structure/Difficulty.java diff --git a/app/src/main/java/gui/menu/SoloMenu.java b/app/src/main/java/gui/menu/SoloMenu.java index e8c6d2a..01dff9a 100644 --- a/app/src/main/java/gui/menu/SoloMenu.java +++ b/app/src/main/java/gui/menu/SoloMenu.java @@ -2,10 +2,8 @@ package gui.menu; import imgui.ImGui; import imgui.type.ImInt; -import sudoku.solver.Solver; -import sudoku.structure.Cell; +import sudoku.structure.Difficulty; import sudoku.structure.MultiDoku; -import sudoku.structure.Sudoku; import sudoku.structure.SudokuFactory; public class SoloMenu extends BaseView { @@ -26,20 +24,7 @@ public class SoloMenu extends BaseView { private void pushSudokuState(MultiDoku doku, boolean empty) { if (!empty) { try { - int level = 0; - for (Sudoku sudoku : doku.getSubGrids()) { - level += sudoku.getSize() * sudoku.getSize() / 10 * 3; - } - Solver.solve(doku); - level = (level - 1) / doku.getNbSubGrids(); - SudokuFactory.newDokuFromFilledOne(doku, level); - for (Sudoku sudoku : doku.getSubGrids()) { - for (Cell cell : sudoku.getCells()) { - if (cell.getSymbolIndex() != Cell.NOSYMBOL) { - cell.setImmutable(); - } - } - } + SudokuFactory.fillDoku(doku, Difficulty.Easy); } catch (Exception e) { e.printStackTrace(); } diff --git a/app/src/main/java/sudoku/structure/Difficulty.java b/app/src/main/java/sudoku/structure/Difficulty.java new file mode 100644 index 0000000..b79d261 --- /dev/null +++ b/app/src/main/java/sudoku/structure/Difficulty.java @@ -0,0 +1,18 @@ +package sudoku.structure; + +//TODO: melvyn va passer par là +public enum Difficulty { + + VeryEasy(0.1), Easy(0.25), Medium(0.5), Hard(0.75); + + double factor; + + Difficulty(double factor) { + this.factor = factor; + } + + public double getFactor() { + return factor; + } + +} diff --git a/app/src/main/java/sudoku/structure/SudokuFactory.java b/app/src/main/java/sudoku/structure/SudokuFactory.java index 7b843b3..535af2c 100644 --- a/app/src/main/java/sudoku/structure/SudokuFactory.java +++ b/app/src/main/java/sudoku/structure/SudokuFactory.java @@ -237,31 +237,13 @@ public class SudokuFactory { return new MultiDoku(Arrays.asList(sudoku1, sudoku2, sudoku3, sudoku4, sudoku5)); } - public static MultiDoku createBasicRectangleDokuToSolve(int width, int height, double difficulty) throws Exception { - MultiDoku doku = createBasicEmptyRectangleSudoku(width, height); + public static void fillDoku(MultiDoku doku, Difficulty difficulty) throws Exception { Solver.solveRandom(doku, random); - int nbCellsToEmpty = (int)(difficulty*doku.getNbCells()); + int nbCellsToEmpty = (int)(difficulty.getFactor()*doku.getNbCells()); boolean successfull = newDokuFromFilledOne(doku, nbCellsToEmpty); if (!successfull) { throw new Exception("Canno't create this doku with this difficulty"); } doku.setFilledCellsImmutable(); - return doku; - } - - public static MultiDoku createBasicSquareDokuToSolve(int size, double difficulty) throws Exception { - return createBasicRectangleDokuToSolve(size, size, difficulty); - } - - public static MultiDoku createBasicXShapedMultiDokuToSolve(int size, double difficulty) throws Exception { - MultiDoku doku = createBasicXShapedMultidoku(size); - Solver.solveRandom(doku, random); - int nbCellsToEmpty = (int)(difficulty*doku.getNbCells()); - boolean successful = newDokuFromFilledOne(doku, nbCellsToEmpty); - if (!successful) { - throw new Exception("Cannot create this Doku with this difficulty"); - } - doku.setFilledCellsImmutable(); - return doku; } }