From 87cf986e05bdcf676358af90db29e923af4644bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr> Date: Wed, 12 Oct 2022 12:05:15 +0200 Subject: [PATCH] Improve get fill value, ponderate from sibling cells --- android/gradle.properties | 4 +- .../metadata/android/en-US/changelogs/6.txt | 1 + .../metadata/android/fr-FR/changelogs/6.txt | 1 + lib/utils/board_utils.dart | 59 ++++++++++++++++++- 4 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/6.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/6.txt diff --git a/android/gradle.properties b/android/gradle.properties index aa51064..135006f 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.5 -app.versionCode=5 +app.versionName=0.0.6 +app.versionCode=6 diff --git a/fastlane/metadata/android/en-US/changelogs/6.txt b/fastlane/metadata/android/en-US/changelogs/6.txt new file mode 100644 index 0000000..ad7e4dd --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/6.txt @@ -0,0 +1 @@ +Improve get new cell value, ponderate from sibling cells diff --git a/fastlane/metadata/android/fr-FR/changelogs/6.txt b/fastlane/metadata/android/fr-FR/changelogs/6.txt new file mode 100644 index 0000000..6fe58ca --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/6.txt @@ -0,0 +1 @@ +Amélioration de la sélection de la couleur d'une nouvelle case, pondération avec les couleurs voisines diff --git a/lib/utils/board_utils.dart b/lib/utils/board_utils.dart index f270797..afe0c62 100644 --- a/lib/utils/board_utils.dart +++ b/lib/utils/board_utils.dart @@ -153,12 +153,65 @@ class BoardUtils { return true; } + static bool isInBoard(Data myProvider, int row, int col) { + if (row > 0 && + row < myProvider.sizeHorizontal && + col > 0 && + col < myProvider.sizeVertical) { + return true; + } + return false; + } + static String getFillValue(Data myProvider, int row, int col) { - var rand = new Random(); + // build a list of values to pick one + List<String> values = []; + + // All eligible values int maxValue = myProvider.colorsCount; - int value = 1 + rand.nextInt(maxValue); + for (int i = 1; i <= maxValue; i++) { + values.add(i.toString()); + } + + // Add values of current col + for (int r = 0; r <= myProvider.sizeVertical; r++) { + if (isInBoard(myProvider, r, col)) { + String value = myProvider.getCellValue(r, col); + if (value != '0') { + values.add(value); + } + } + } + + // Add values of sibling cols + for (int deltaCol = -1; deltaCol <= 1; deltaCol++) { + int c = col + deltaCol; + for (int r = 0; r < myProvider.sizeVertical; r++) { + if (isInBoard(myProvider, r, c)) { + String value = myProvider.getCellValue(r, c); + if (value != '0') { + values.add(value); + } + } + } + } + + // Add values of sibling cells + for (int deltaCol = -2; deltaCol <= 2; deltaCol++) { + int c = col + deltaCol; + for (int deltaRow = -2; deltaRow <= 2; deltaRow++) { + int r = row + deltaRow; + if (isInBoard(myProvider, r, c)) { + String value = myProvider.getCellValue(r, c); + if (value != '0') { + values.add(value); + } + } + } + } - return value.toString(); + // Pick random value from "ponderated" list + return values[Random().nextInt(values.length)]; } static moveCellsDown(Data myProvider) { -- GitLab