private void openTile(int x, int y) { //Метод "Ячека открыта". if (gameField[y][x].isOpen || gameField[y][x].isFlag || isGameStopped == true) { return; } //gameField[y][x].isOpen = true; countClosedTiles--; if (gameField[y][x].isMine) { //если gameObject по текущим координатам является миной, отрисовывать MINE //setCellColor(x, y, Color.RED); setCellValue(x, y, MINE); setCellValueEx(x, y, Color.RED, MINE); //если объект является миной, должна отрисовываться мина на красном фоне (используй метод setCellValueEx(int, int, Color, String)) и вызываться метод gameOver(). gameOver(); } else if (!gameField[y][x].isMine) { setCellNumber(x, y, gameField[y][x].countMineNeighbors); //отрисовывать количество соседей-мин, если gameObject по текущим координатам не является миной. gameField[y][x].isOpen = true; setCellColor(x, y, Color.GRAY); score += 5; //При открытии ячейки без мины счет увеличивается на 5 очков. setScore(score); // Отобразить счет на игровом поле. } if (!gameField[y][x].isMine && gameField[y][x].countMineNeighbors == 0) { //В методе openTile(int, int), если элемент не является миной и количество соседей-мин равно нулю, для каждого не открытого соседа должен рекурсивно вызываться метод openTile(int, int). setCellValue(x, y, ""); //openTile(int, int) не должен ничего выводить, если элемент не является миной и количество соседей мин равно нулю. List<GameObject> neighbors = getNeighbors(gameField[y][x]); //вызывать метод getNeighbors(GameObject), если элемент не является миной и количество соседей-мин равно нулю. for (GameObject gameObject : neighbors) { if (!gameObject.isOpen) { //для каждого неоткрытого соседа setCellColor(x, y, Color.ORANGE); gameField[y][x].isOpen = true; openTile(gameObject.x, gameObject.y); //рекурсия } } } else if (!gameField[y][x].isMine && gameField[y][x].countMineNeighbors != 0) { //В методе openTile(int, int), если элемент не является миной и количество соседей мин не равняется нулю, на игровое поле должно выводиться количество заминированных соседей. Используй метод setCellNumber(int, int, int). if (!gameField[y][x].isOpen) { setCellNumber(x, y, gameField[y][x].countMineNeighbors); } } if (countClosedTiles == countMinesOnField && !gameField[y][x].isMine) { win(); } setScore(score); }