Не понимаю почему не проходит проверку
private void markTile(int x, int y){
countFlags = 10;
if(gameField[y][x].isOpen) {return;}
if(countFlags ==0 && gameField[y][x].isFlag == false) {return;}
if (gameField[y][x].isFlag == false){
gameField[y][x].isFlag = true;
countFlags = countFlags-1;
setCellValue(x, y, FLAG);
setCellColor(x, y, Color.YELLOW);
}
else{
gameField[y][x].isFlag = false;
countFlags = countFlags+1;
setCellValue(x, y, "");
setCellColor(x,y, Color.ORANGE);
}
}
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;
private int colmin = 0;
private int countMinesOnField;
private static final String MINE = "\uD83D\uDCA3";
private static final String FLAG = "\uD83D\uDEA9";
private int countFlags;
private GameObject[][] gameField = new GameObject[SIDE][SIDE];
public void initialize(){
setScreenSize(SIDE,SIDE);
createGame();
}
private void createGame(){
boolean mina = true;
for (int i = 0; i< gameField.length; i++){
for (int j = 0; j< gameField[i].length; j++){
mina = getRandomNumber(10) == 0 ;
gameField[i][j] = new GameObject(j,i, mina);
setCellColor(i,j,Color.ORANGE);
if (mina) {
colmin++;
countMinesOnField = colmin;
}
}
}
countMineNeighbors();
countFlags = countMinesOnField;
}
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 List<GameObject> getNeighbors(GameObject gameObject){
List<GameObject> sosedi = new ArrayList<>();
if (gameObject.x - 1 >= 0) sosedi.add(gameField[gameObject.y][gameObject.x-1]);
if (gameObject.y - 1 >= 0) sosedi.add(gameField[gameObject.y-1][gameObject.x]);
if (gameObject.x + 1 < SIDE) sosedi.add(gameField[gameObject.y][gameObject.x+1]);
if (gameObject.y + 1 < SIDE) sosedi.add(gameField[gameObject.y+1][gameObject.x]);
if (gameObject.x - 1 >= 0 && gameObject.y - 1 >= 0) sosedi.add(gameField[gameObject.y-1][gameObject.x-1]);
if (gameObject.y - 1 >= 0 && gameObject.x + 1 < SIDE) sosedi.add(gameField[gameObject.y-1][gameObject.x+1]);
if (gameObject.x + 1 < SIDE && gameObject.y + 1 < SIDE) sosedi.add(gameField[gameObject.y+1][gameObject.x+1]);
if (gameObject.y + 1 < SIDE && gameObject.x - 1 >= 0) sosedi.add(gameField[gameObject.y+1][gameObject.x-1]);
return sosedi;
}
private void openTile(int x, int y){
if (!gameField[y][x].isMine) {
if (gameField[y][x].countMineNeighbors == 0){
if (gameField[y][x].isOpen == false){
setCellValue(x, y, "");
setCellColor(x, y, Color.GREEN);
gameField[y][x].isOpen = true;
List<GameObject> neighborns = getNeighbors(gameField[y][x]);
for (int i = 0; i < neighborns.size(); i++) {
openTile(neighborns.get(i).x, neighborns.get(i).y);
}
}
}
if (gameField[y][x].countMineNeighbors!=0) {
setCellNumber(x, y, gameField[y][x].countMineNeighbors);
setCellColor(x, y, Color.GREEN);
gameField[y][x].isOpen = true;
}
}
}
public void onMouseLeftClick(int x, int y){
openTile(x,y);
}
public void onMouseRightClick(int x, int y){
markTile(x,y);
}
private void markTile(int x, int y){
countFlags = 10;
if(gameField[y][x].isOpen) {return;}
if(countFlags ==0 && gameField[y][x].isFlag == false) {return;}
if (gameField[y][x].isFlag == false){
gameField[y][x].isFlag = true;
countFlags = countFlags-1;
setCellValue(x, y, FLAG);
setCellColor(x, y, Color.YELLOW);
}
else{
gameField[y][x].isFlag = false;
countFlags = countFlags+1;
setCellValue(x, y, "");
setCellColor(x,y, Color.ORANGE);
}
}
}