diff --git a/android/gradle.properties b/android/gradle.properties index aa51064abebb79ba519e600afb7af23779154d4e..135006f9c1386c8757595c43e890e911f732f5a3 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 0000000000000000000000000000000000000000..ad7e4ddd3965aa5f2bfdc3c5dca2db9f3bc963fb --- /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 0000000000000000000000000000000000000000..6fe58ca185ed2391abcb6f5dafc8b80618ffa10a --- /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 f2707978a4278362d3b2e544f4c62ba1087d11c6..afe0c62acc2bd6722b9881925bd514b2797a73e0 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) {