Уже второй день ломаю голову с этой задачей.С логикой вроде всё правильно.Что ему не нравиться ???=)
package com.javarush.games.minesweeper;
import com.javarush.engine.cell.*;
import java.util.ArrayList;
public class MinesweeperGame extends Game {
private final static int SIDE = 9;
private GameObject[][] gameField = new GameObject[SIDE][SIDE];
private int countMinesOnField;
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)<1){
gameField[i][j]=new GameObject(i,j,true);
setCellColor(gameField[i][j].x,gameField[i][j].y,Color.RED);
countMinesOnField++;
}
else {
gameField[i][j]=new GameObject(i,j,false);
setCellColor(gameField[i][j].x,gameField[i][j].y,Color.ORANGE);
}
}
}
countMineNeighbors();
}
private void countMineNeighbors(){
for(int i =0;i<SIDE;i++){
for(int j=0;j<SIDE;j++){
if(!gameField[i][j].isMine){
ArrayList<GameObject> cNeighbors=getNeighbors(gameField[i][j]);
for (GameObject ngb:cNeighbors){
if(!ngb.isMine){
cNeighbors.remove(ngb);
}
}
gameField[i][j].countMineNeighbors=cNeighbors.size();
}
}
}
}
private ArrayList<GameObject> getNeighbors(GameObject gameObject){
ArrayList<GameObject> neighbors= new ArrayList<GameObject> ();
int xL=gameObject.x+1;
int xS=gameObject.x-1;
int yL=gameObject.y+1;
int yS=gameObject.y-1;
if(xL>SIDE-1){
xL=SIDE-1;
}
if(xS<0){
xS=0;
}
if(yL>SIDE-1){
yL=SIDE-1;
}
if(yS<0){
yS=0;
}
for (int x=xS;x<xL+1;x++){
for (int y=yS;y<yL+1;y++){
if(x!=gameObject.x&&y!=gameObject.y){
neighbors.add(gameField[x][y]);
}
}
}
return neighbors;
}
}