From 52ca8b208cb9e73e00a72d670097d0208ff3103a Mon Sep 17 00:00:00 2001 From: Janet-Doe Date: Sat, 1 Feb 2025 16:11:38 +0000 Subject: [PATCH] fix: sudoku save --- app/src/main/java/sudoku/Main.java | 12 +++++++-- .../main/java/sudoku/io/ConsoleInterface.java | 8 ++++++ .../main/java/sudoku/io/SudokuSerializer.java | 25 ++++++++++++++++--- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/sudoku/Main.java b/app/src/main/java/sudoku/Main.java index 4d90b66..ba1e45a 100644 --- a/app/src/main/java/sudoku/Main.java +++ b/app/src/main/java/sudoku/Main.java @@ -33,13 +33,21 @@ public class Main { SudokuSerializer.saveMultiDoku(md); } + public static void overwriteTest(int n){ + MultiDoku md = SudokuFactory.createBasicXShapedMultidoku(3, SudokuFactory.DEFAULT_CONSTRAINTS); + new RandomSolver().solve(md); + SudokuPrinter.printMultiDoku(RenderableMultidoku.fromMultidoku(md), Symbols.Numbers, 3, 3); + SudokuSerializer.saveMultiDoku(md, n); + } + public static void main(String[] args) { ConsoleInterface console = new ConsoleInterface(); /* voidTest(); filledTest(); - filledTest(); - */ + overwriteTest(0); + overwriteTest(17) + */ console.welcome(); } } diff --git a/app/src/main/java/sudoku/io/ConsoleInterface.java b/app/src/main/java/sudoku/io/ConsoleInterface.java index 42216ee..cc42396 100644 --- a/app/src/main/java/sudoku/io/ConsoleInterface.java +++ b/app/src/main/java/sudoku/io/ConsoleInterface.java @@ -69,6 +69,8 @@ public class ConsoleInterface { } System.out.println("Here's your sudoku !"); showMultidoku(doku, listSymbols, width, height); + System.out.println("You can now save it!"); + saveMultiDoku(doku); } private MultiDoku saveChoice() { @@ -175,4 +177,10 @@ public class ConsoleInterface { SudokuPrinter.printMultiDoku(doku, listSymbols, width, height); } + private void saveMultiDoku(MultiDoku doku){ + System.out.println("Number of the file to overwrite ('-1' or unused save file number to create a new save) :"); + int n = reader.nextInt(); + String path = SudokuSerializer.saveMultiDoku(doku, n); + System.out.println("The path to your save is:" + path); + } } diff --git a/app/src/main/java/sudoku/io/SudokuSerializer.java b/app/src/main/java/sudoku/io/SudokuSerializer.java index 96ac2c5..5727c21 100644 --- a/app/src/main/java/sudoku/io/SudokuSerializer.java +++ b/app/src/main/java/sudoku/io/SudokuSerializer.java @@ -124,17 +124,13 @@ public class SudokuSerializer { * @return String, the path of the save. */ public static String saveMultiDoku(final MultiDoku doku) { - JSONObject jsonRoot = serializeSudoku(doku); - File f = new File("save", "save.json"); int i = 0; - while (f.exists()) { String newName = "save-" + ++i + ".json"; f = new File("save", newName); } - try (FileWriter file = new FileWriter(f)) { file.write(jsonRoot.toString(3)); } catch (IOException e) { @@ -143,6 +139,27 @@ public class SudokuSerializer { return f.getAbsolutePath(); } + public static String saveMultiDoku(final MultiDoku doku, final int saveToOverwrite) { + File f; + if (saveToOverwrite == 0) { + f = new File("save", "save.json"); + } + else { + f = new File("save", "save-" + saveToOverwrite + ".json"); + } + if (!f.exists()) { + return saveMultiDoku(doku); + } + else { + try (FileWriter file = new FileWriter(f)) { + file.write(serializeSudoku(doku).toString(3)); + } catch (IOException e) { + e.printStackTrace(); + } + return f.getAbsolutePath(); + } + } + /** * Get a MultiDoku from a pre-existing json save file. *