Код компилится.
Подсказывает: Похоже, ты посчитал количество соседей-мин для ячейки, которая является миной, а этого делать не нужно. Но у меня идет прямая проверка на это. Где косяк?
package com.javarush.games.minesweeper;
import com.javarush.engine.cell.*;
import java.util.*;
public class MinesweeperGame extends Game {
private static final 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 x = 0; x < SIDE; x++) {
for (int y = 0; y < SIDE; y++) {
int rng = getRandomNumber(10);
if (rng == 0) {
gameField[x][y] = new GameObject(y, x, true);
countMinesOnField++;
}
else gameField[x][y] = new GameObject(y, x, false);
setCellColor(x,y,Color.ORANGE);
}
}
countMineNeighbors();
}
private void countMineNeighbors() {
for (int x = 0; x < SIDE; x++) {
for (int y = 0; y < SIDE; y++) {
if (!gameField[x][y].isMine) {
ArrayList<GameObject> mines = getNeighbors(gameField[x][y]);
for (GameObject check : mines) {
if (!check.isMine) mines.remove(check);
}
gameField[x][y].countMineNeighbors = mines.size();
}
}
}
}
private ArrayList<GameObject> getNeighbors (GameObject tile) {
ArrayList<GameObject> neighbors = new ArrayList<GameObject>();
for (int x = tile.y - 1; x < tile.y + 2; x ++) {
for (int y = tile.x - 1; y < tile.x + 2; y++) {
if (y != tile.x && x != tile.y) {
try {
neighbors.add (gameField[x][y]);
}
catch (Exception e){};
}
}
}
return neighbors;
}
}