На мой взгляд - все верно. Прошу помощи.
package com.javarush.games.minesweeper;
import com.javarush.engine.cell.*;
import java.util.ArrayList;
import java.util.List;
public class MinesweeperGame extends Game {
private static final int SIDE=9, SIDE1=8;
private GameObject[][] gameField = new GameObject[SIDE][SIDE];
private int countMinesOnField=0; // кол мин
private static final String MINE="\uD83D\uDCA3";
@Override
public void initialize() {
setScreenSize(SIDE, SIDE);
createGame();
}
@Override
public void onMouseLeftClick(int x, int y) {
openTile(x, y);
}
private void openTile(int x, int y){ // отрисовать MINE, если gameObject по текущим координатам является миной
//отрисовать количество соседей-мин, если gameObject по текущим координатам не является миной
// установить isOpen, и отрисовываться фон ячейки
gameField[y][x].isOpen = true;
setCellColor(x, y, Color.GREEN);
setCellNumber(x, y, gameField[y][x].countMineNeighbors);
if (gameField[y][x].isMine) {
setCellValue(x, y, MINE);
setCellColor(x, y, Color.RED);
}
}
private void createGame(){
boolean mine;
for(int i=0; i < SIDE; i++) {
for (int j=0; j < SIDE; j++) {
if ( getRandomNumber(10)< 0.1 ) {
gameField[i][j]=new GameObject(i, j, true);
countMinesOnField++;
}
else gameField[i][j]=new GameObject(i, j, false);
setCellColor(j, i, Color.ORANGE);
}
}
countMineNeighbors(); // количество мин которые видит ячейка не мина
}
private List<GameObject> getNeighbors(GameObject gObj) {
// возвращает для объекта типа GameObject список всех существующих соседей
List listNeighbors=new ArrayList<GameObject>();
int x=gObj.x;
int y=gObj.y;
for (int i=x-1; i<=x+1; i++) {
for (int j=y-1; j<=y+1; j++) {
if ( (i!=x || j!=y) && (i>=0 && j>=0 && i<SIDE && j<SIDE)){
listNeighbors.add(gameField[i][j]);
}
}
}
return listNeighbors;
}
private void countMineNeighbors() {
//для каждого элемента "не мины" матрицы gameField считает количество соседних ячеек-мин
for(int i=0; i< SIDE; i++){
for(int j=0; j< SIDE; j++){
if(!gameField[i][j].isMine){
for (GameObject obj: getNeighbors(gameField[i][j])) {
if(obj.isMine) gameField[i][j].countMineNeighbors++;
}
}
}
}
}
}