From 648f7a96bd4a80aedff1fa0ab0c024946d7e1bd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Thu, 8 Jul 2021 21:01:32 +0200 Subject: [PATCH] Fix display conflicts in board --- android/gradle.properties | 4 +- .../metadata/android/en-US/changelogs/27.txt | 1 + .../metadata/android/fr-FR/changelogs/27.txt | 1 + lib/entities/cell.dart | 2 + lib/utils/board_utils.dart | 38 +++++++++++-------- 5 files changed, 29 insertions(+), 17 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/27.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/27.txt diff --git a/android/gradle.properties b/android/gradle.properties index f0fcf6c..408253c 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 0000000..fb8f60c --- /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 0000000..32a34d5 --- /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 f8911de..f9213e9 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 2c93084..51520a9 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; } } -- GitLab