difficulties
All checks were successful
Linux arm64 / Build (push) Successful in 52s

This commit is contained in:
2025-01-29 11:47:18 +01:00
parent a221233c06
commit 4190bf15d8
3 changed files with 22 additions and 37 deletions

View File

@@ -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();
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}