Not able to complete last problem
package com.codegym.games.minesweeper;
import com.codegym.engine.cell.*;
public class MinesweeperGame extends Game{
private static final int SIDE=9;
private int countMinesOnField,countFlags;
private static final String MINE="\uD83D\uDCA3",FLAG="\uD83D\uDEA9";
private GameObject gameField[][]=new GameObject[SIDE][SIDE];
public void initialize(){
setScreenSize(SIDE,SIDE);
createGame();
}
private void createGame(){
countMinesOnField=0;
for(int x=0;x<SIDE;x++){
for(int y=0;y<SIDE;y++){
if(getRandomNumber(10)==1){
gameField[y][x]=new GameObject(x,y,true);
countMinesOnField++;
}
else
gameField[y][x]=new GameObject(x,y,false);
setCellColor(x,y,Color.ORANGE);
}
}
countMineNeighbors();
countFlags=countMinesOnField;
}
private void countMineNeighbors(){
for(int i=0;i<SIDE;i++){
for(int j=0;j<SIDE;j++){
if(gameField[i][j].isMine==false)
getNeighbors(gameField[i][j]);
}
}
}
private void getNeighbors(GameObject gameObject){
gameObject.countMineNeighbors=0;
int i=gameObject.y,j=gameObject.x;
for(int m=i-1;m<=i+1;m++){
for(int n=j-1;n<=j+1;n++){
if(m>=0&&n>=0&&m<SIDE&&n<SIDE){
if(m==i){
if(n!=j){
if(gameField[m][n].isMine)
gameObject.countMineNeighbors++;
}
}
else{
if(gameField[m][n].isMine)
gameObject.countMineNeighbors++;
}
}
}
}
}
@Override
public void onMouseLeftClick(int x, int y){
openTile(x,y);
}
private void openTile(int x, int y){
gameField[y][x].isOpen=true;
setCellColor(y,x,Color.BLACK);
if(!gameField[y][x].isMine&&gameField[y][x].countMineNeighbors==0)
setCellValue(x,y,"");
else{
if(gameField[y][x].isMine)
setCellValue(x,y,MINE);
else
setCellNumber(x,y,gameField[y][x].countMineNeighbors);
}
if(!gameField[y][x].isMine&&gameField[y][x].countMineNeighbors==0){
int m=y,n=x;
if(m-1>=0&&m-1<SIDE){
if(!gameField[m-1][n].isOpen)
openTile(n,m-1);
if(n-1>=0&&!gameField[m-1][n-1].isOpen)
openTile(n-1,m-1);
if(n+1<SIDE&&!gameField[m-1][n+1].isOpen)
openTile(n+1,m-1);
}
if(m>=0&&m<SIDE){
if(n-1>=0&&!gameField[m][n-1].isOpen)
openTile(n-1,m);
if(n+1<SIDE&&!gameField[m][n+1].isOpen)
openTile(n+1,m);
}
if(m+1>=0&&m+1<SIDE){
if(!gameField[m+1][n].isOpen)
openTile(n,m+1);
if(n-1>=0&&!gameField[m+1][n-1].isOpen)
openTile(n-1,m-1);
if(n+1<SIDE&&!gameField[m+1][n+1].isOpen)
openTile(n+1,m-1);
}
}
}
}