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