Читал ответы другим, все равно не понимаю, почему не работает :(
package com.javarush.games.minesweeper;
import com.javarush.engine.cell.*;
import java.util.ArrayList;
public class MinesweeperGame extends Game {
private static final int SIDE = 9;
private GameObject[][] gameField = new GameObject[SIDE][SIDE];
private int countMinesOnField = 0;
public void initialize(){
setScreenSize(SIDE,SIDE);
createGame();
}
private void createGame(){
for (int i = 0; i<SIDE; i++){
for (int j = 0; j<SIDE; j++){
setCellColor(j,i,Color.ORANGE);
if(getRandomNumber(10) == 1){
gameField[j][i] = new GameObject(i,j, true);
countMinesOnField++;
}else{
gameField[j][i] = new GameObject(i,j, false);
}
}
}
countMineNeighbors();
}
private void countMineNeighbors(){
for (int i = 0; i<SIDE; i++){
for (int j = 0; j<SIDE; j++){
if(gameField[j][i].isMine){
}else{
ArrayList<GameObject> list = getNeighbors(gameField[j][i]);
gameField[j][i].countMineNeighbors = 0;
for (GameObject go:list){
if(go.isMine){
gameField[j][i].countMineNeighbors++;
}
}
}
}
}
}
private ArrayList<GameObject> getNeighbors(GameObject gameObject){
ArrayList<GameObject> list = new ArrayList<GameObject>();
int startX;
int startY;
int endX;
int endY;
if((gameObject.x - 1)>= 0){
startX = gameObject.x - 1;
}else{
startX = 0;
}
if((gameObject.x + 1)< SIDE){
endX = gameObject.x + 1;
}else{
endX = SIDE -1;
}
if((gameObject.y - 1)>= 0){
startY = gameObject.y - 1;
}else{
startY = 0;
}
if((gameObject.y + 1)< SIDE){
endY = gameObject.y + 1;
}else{
endY = SIDE -1;
}
for (int i = startY; i<endY; i++){
for (int j = startX; j<endX; j++){
list.add(gameField[j][i]);
}
}
return list;
}
}