Валидатор по всем пунктам пропустил, но мины в самом приложении не появляются, как будто вероятность появления мины 0%, хотя указан шанс 1к10, ошибку в коде найти не могу, можете подсказать?
public class MinesweeperGame extends Game {
private static final int SIDE = 9;
private GameObject[][] gameField = new GameObject[SIDE][SIDE];
boolean isMine = getRandomNumber(10) == 1;
private int countMinesOnField;
private final static String MINE = "\uD83D\uDCA3";
@Override
public void initialize() {
setScreenSize(SIDE, SIDE);
createGame();
}
private void createGame() {
for (int y = 0; y < SIDE; y++) {
for (int x = 0; x < SIDE; x++) {
if (isMine) {
countMinesOnField++;
}
gameField[y][x] = new GameObject(x, y, isMine);
setCellColor(x, y, Color.ORANGE);
}
}
countMineNeighbors();
}
//должен для каждой ячейки "не мины" из матрицы gameField подсчитать количество
// соседних ячеек "мин" и установить это значение в поле countMineNeighbors.
private int countMineNeighbors() {
List<GameObject> list; //создаем список полей которые "не мины"
for (int y = 0; y < SIDE; y++) { //проходимся по каждому полю gameField
for (int x = 0; x < SIDE; x++) { //все еще проходимся по каждому полю gameField
if (!gameField[y][x].isMine) { //если поле "не мина"
list = getNeighbors(gameField[y][x]); //получаем соседей этого поля и заносим их в list
for (GameObject gameObject : list) { //прогоняем gameObject через list
if (gameObject.isMine) { //если gameObject соседей мина увеличиваем countMineNeighbors на 1
gameField[y][x].countMineNeighbors++;
}
}
}
}
}
return countMinesOnField;
}
private List<GameObject> getNeighbors(GameObject gameObject) {
List<GameObject> result = new ArrayList<>();
for (int y = gameObject.y - 1; y <= gameObject.y + 1; y++) {
for (int x = gameObject.x - 1; x <= gameObject.x + 1; x++) {
if (y < 0 || y >= SIDE) {
continue;
}
if (x < 0 || x >= SIDE) {
continue;
}
if (gameField[y][x] == gameObject) {
continue;
}
result.add(gameField[y][x]);
}
}
return result;
}
private void openTile(int x, int y) { //отрисовывать MINE, если gameObject по текущим координатам является миной.
gameField[y][x].isOpen = true;
setCellColor(x,y,Color.VIOLET);
if (gameField[y][x].isMine) setCellValue(x, y, MINE);
//отрисовывать количество соседей-мин, если gameObject по текущим координатам не является миной.Используй метод setCellNumber(int, int, int).
else setCellNumber(x, y, (gameField[y][x]).countMineNeighbors);
//элементу матрицы gameField должно устанавливаться значение поля isOpen, равное true,
//и отрисовываться фон ячейки с помощью метода setCellColor(int, int, Color). Например, в Color.GREEN.
}
@Override
public void onMouseLeftClick(int x, int y) { //В методе onMouseLeftClick(int, int) должен быть вызван метод openTile(int, int).
super.onMouseLeftClick(x, y);
openTile(x,y);
}
}