Валидатор ругается на один пункт:
Метод markTile(int, int) должен устанавливать значение поля isFlag в false, увеличивать количество неиспользованных флагов на единицу, отрисовывать на поле пустую ячейку, если текущий элемент — флаг (используй метод setCellValue(int, int, String)) и возвращать исходный цвет ячейки (используй метод setCellColor(int, int, Color)).
Вот код метода, и он работает! В чём блин проблема?? Бесит. В ответ принципиально лезть не хочу...
private void markTile(int x, int y) {
GameObject gameObj = gameField[y][x];
if (!gameObj.isOpen) {
if (!gameObj.isFlag) {
if (countFlags > 0) {
setCellColor(x, y, Color.YELLOW);
setCellValue(x, y, FLAG);
gameObj.isFlag = true;
countFlags--;
} else { }
} else {
gameObj.isFlag = false; // Ставим значение поля isFlag в false
countFlags++; // Добавляем неиспользованный флаг в счетчик
setCellValue(x, y, " "); // Отрисовываем пустую ячейку
setCellColor(x, y, Color.GRAY); // Ставим цвет как было до того, как пометили
}
}
}package com.javarush.games.minesweeper;
public class GameObject {
public int x;
public int y;
public boolean isMine = false;
public int countMineNeighbors = 0;
public boolean isOpen = false;
public boolean isFlag = false;
public GameObject(int x, int y, boolean isMine) {
this.x = x;
this.y = y;
this.isMine = isMine;
}
}