Skip to content
Snippets Groups Projects
Commit d0d75680 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Merge branch '7-improve-get-fill-value-function' into 'master'

Resolve "Improve get fill value function"

Closes #7

See merge request !6
parents 00fa438d 87cf986e
No related branches found
No related tags found
1 merge request!6Resolve "Improve get fill value function"
Pipeline #3804 passed
org.gradle.jvmargs=-Xmx1536M org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
app.versionName=0.0.5 app.versionName=0.0.6
app.versionCode=5 app.versionCode=6
Improve get new cell value, ponderate from sibling cells
Amélioration de la sélection de la couleur d'une nouvelle case, pondération avec les couleurs voisines
...@@ -153,12 +153,65 @@ class BoardUtils { ...@@ -153,12 +153,65 @@ class BoardUtils {
return true; 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) { 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 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) { static moveCellsDown(Data myProvider) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment