что не так, чего-то не хватает, не могу понять чего(
package com.javarush.games.minesweeper;
import com.javarush.engine.cell.*;
import java.util.*;
import java.io.*;
import java.util.ArrayList;
public class MinesweeperGame extends Game{
private static final int SIDE = 9;
public void initialize() {
setScreenSize(SIDE, SIDE);
createGame();
}
private GameObject[][] gameField = new GameObject[SIDE][SIDE];
private static final String MINE = "\uD83D\uDCA3";
private static final String FLAG = "\uD83D\uDEA9";
private int countFlags;
private int countMinesOnField;
private void createGame(){
for(int x = 0; x < gameField.length; x++){
for(int y = 0; y < gameField[x].length; y++){
setCellColor(y, x, Color.PINK);
boolean t = false;
if (getRandomNumber(10)==1){
t=true;
countMinesOnField++;
}
gameField[y][x] = new GameObject(x, y, t);
}
}
countMineNeighbors(); /*вызываем метод*/
countFlags = countMinesOnField;
}
private void countMineNeighbors(){ /* добавляем посчитанных соседей в ячейки*/
for (int y = 0; y < gameField.length ; y++) {
for (int x = 0; x < gameField[y].length ; x++) {
if (!gameField[y][x].isMine) {
for (GameObject object : getNeighbors(gameField[y][x]) ) {
if (object.isMine) {
gameField[y][x].countMineNeighbors++;
}
}
}
}
}
}
public List<GameObject> getNeighbors(GameObject gameObject) { /*считаем соседей у минированных ячеек и добаляем
в массив result;*/
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){ //отрисовываем мину если isMine true;
gameField[y][x].isOpen = true;
setCellColor(x,y,Color.VIOLET);
if (gameField[y][x].isMine)
{
setCellValue(x, y, MINE);
setCellColor(x,y,Color.RED);
gameField[y][x].isOpen = true;
}
else if(gameField[y][x].countMineNeighbors == 0){
setCellValue(x, y, "");
List<GameObject> neighbors = getNeighbors(gameField[x][y]);
for (GameObject gameObject : neighbors) {
if (!gameObject.isOpen) {
setCellColor(x, y, Color.VIOLET);
gameField[x][y].isOpen = true;
openTile(gameObject.y, gameObject.x);
}
}
}
//отрисовывать количество соседей-мин, если gameObject по текущим координатам не является миной.Используй метод setCellNumber(int, int, int).
else if(gameField[y][x].countMineNeighbors != 0){
setCellNumber(x, y, (gameField[y][x]).countMineNeighbors);
gameField[x][y].isOpen = true;
}
//элементу матрицы 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);
}
}