diff --git a/android/gradle.properties b/android/gradle.properties index f0fcf6cdd8fc72bc76b35e7be0dc622b20c03b0f..408253ceb04c0c7c49b3b9daf597f35b66ce16c1 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,5 +1,5 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -app.versionName=0.0.26 -app.versionCode=26 +app.versionName=0.0.27 +app.versionCode=27 diff --git a/fastlane/metadata/android/en-US/changelogs/27.txt b/fastlane/metadata/android/en-US/changelogs/27.txt new file mode 100644 index 0000000000000000000000000000000000000000..fb8f60c14e191801f5642b4545659ef0f1d03436 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/27.txt @@ -0,0 +1 @@ +Fix display conflicts in board diff --git a/fastlane/metadata/android/fr-FR/changelogs/27.txt b/fastlane/metadata/android/fr-FR/changelogs/27.txt new file mode 100644 index 0000000000000000000000000000000000000000..32a34d5e0c390c4f2f1acad189c04eafa68ef0fd --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/27.txt @@ -0,0 +1 @@ +Correction de l'affichage des conflits sur la grille diff --git a/lib/entities/cell.dart b/lib/entities/cell.dart index f8911de01c6e76945db1529dfe8926c8fd6bf738..f9213e94b2fb167359415530af72676b84201915 100644 --- a/lib/entities/cell.dart +++ b/lib/entities/cell.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import '../provider/data.dart'; +import '../utils/board_utils.dart'; class Cell { int value; @@ -103,6 +104,7 @@ class Cell { myProvider.updateCellValue(myProvider.currentCellCol, myProvider.currentCellRow, this.value); } myProvider.selectCell(null, null); + BoardUtils.computeConflictsInBoard(myProvider); }, ) ); diff --git a/lib/utils/board_utils.dart b/lib/utils/board_utils.dart index 2c9308406a396feb6cc7a6ed902a0c51c4af22ad..51520a91b2b9d29c59822fbeff4c90eb17a72cac 100644 --- a/lib/utils/board_utils.dart +++ b/lib/utils/board_utils.dart @@ -156,19 +156,36 @@ class BoardUtils { bool isSolved = true; - // reset conflict states + // (re)compute conflicts + BoardUtils.computeConflictsInBoard(myProvider); + + // check grid is fully completed and does not contain conflict for (var row = 0; row < boardSize; row++) { for (var col = 0; col < boardSize; col++) { - cells[row][col].conflictsCount = 0; + if (cells[row][col].value == 0 || cells[row][col].conflictsCount != 0) { + return false; + } } } - // check grid is fully completed + print('-> ok sudoku solved!'); + + return true; + } + + + static void computeConflictsInBoard(Data myProvider) { + List cells = myProvider.cells; + + int blockSizeHorizontal = myProvider.blockSizeHorizontal; + int blockSizeVertical = myProvider.blockSizeVertical; + + int boardSize = blockSizeHorizontal * blockSizeVertical; + + // reset conflict states for (var row = 0; row < boardSize; row++) { for (var col = 0; col < boardSize; col++) { - if (cells[row][col].value == 0) { - isSolved = false; - } + cells[row][col].conflictsCount = 0; } } @@ -188,7 +205,6 @@ class BoardUtils { for (var col = 0; col < boardSize; col++) { cells[row][col].conflictsCount++; } - isSolved = false; } } @@ -208,7 +224,6 @@ class BoardUtils { for (var row = 0; row < boardSize; row++) { cells[row][col].conflictsCount++; } - isSolved = false; } } @@ -241,16 +256,9 @@ class BoardUtils { cells[row][col].conflictsCount++; } } - isSolved = false; } } } - - if (isSolved) { - print('-> ok sudoku solved!'); - } - - return isSolved; } }