Сломался метод markTile (строка 110)!!! Я его вообще не трогал и всегда работал, а теперь ругается валидатор на слово private
com/javarush/games/minesweeper/part13/MinesweeperGame.java:111: error: illegal start of expression
private void markTile(int x, int y) {
^
package com.javarush.games.minesweeper;
import com.javarush.engine.cell.Color;
import com.javarush.engine.cell.Game;
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;
private static final String MINE = "\uD83D\uDCA3";
private static final String FLAG = "\uD83D\uDEA9";
private int countFlags;
private boolean isGameStopped;
private int countClosedTiles = SIDE * SIDE;
@Override
public void initialize() {
setScreenSize(SIDE, SIDE);
createGame();
}
private void createGame() {
isGameStopped = false;
for (int y = 0; y < SIDE; y++) {
for (int x = 0; x < SIDE; x++) {
setCellColor(x, y, Color.ORANGE);
boolean isMine = getRandomNumber(10) < 1;
if (isMine) {
countMinesOnField++;
}
gameField[y][x] = new GameObject(x, y, isMine);
}
}
countMineNeighbors();
countFlags = countMinesOnField;
}
private void gameOver(){
isGameStopped = true;
showMessageDialog(Color.GREY, "You lose", Color.RED, 52);
return;
}
private void win(){
isGameStopped = true;
showMessageDialog(Color.WHITE, "You WIN!!!!!!!", Color.GREEN, 52);
}
private void countMineNeighbors() {
for (int y = 0; y < SIDE; y++) {
for (int x = 0; x < SIDE; x++) {
if (!gameField[y][x].isMine) {
ArrayList<GameObject> list = new ArrayList<>();
list = getNeighbors(gameField[y][x]);
for (GameObject object : list) {
if (object.isMine) {
gameField[y][x].countMineNeighbors++;
}
}
} // проверка else { setCellColor(x, y, Color.BLACK);}
}
}
}
private ArrayList<GameObject> getNeighbors(GameObject gameObject) {
ArrayList<GameObject> neigbors = new ArrayList<>();
for (int y = gameObject.y-1; y <= gameObject.y+1; y++){
for (int x = gameObject.x-1; x <= gameObject.x+1; x++) {
if (y < 0 || y >= SIDE) {continue;}
if (x < 0 || x >= SIDE) {continue;}
if (gameField[y][x] == gameObject) {continue;}
neigbors.add(gameField[y][x]);
}
}
return neigbors;
}
private void openTile(int x, int y) {
if (isGameStopped || gameField[y][x].isOpen || gameField[y][x].isFlag){}
else {
gameField[y][x].isOpen = true;
countClosedTiles--;
if (gameField[y][x].isMine) {
setCellValueEx(x, y, Color.RED, MINE);
gameOver();
} else if (gameField[y][x].countMineNeighbors == 0){
setCellColor(x, y, Color.BLUE);
ArrayList<GameObject> nullNeigbors = new ArrayList<>();
nullNeigbors = getNeighbors(gameField[y][x]);
setCellValue(x,y,"");
for (GameObject object : nullNeigbors) {
if (!object.isOpen) {
openTile(object.x, object.y);
}
}
} else {
setCellColor(x, y, Color.BLUE);
setCellNumber(x, y, gameField[y][x].countMineNeighbors);
}
}
if (countMineNeighbors == countMinesOnField && !gameField[y][x].isMine) {
win();
}
private void markTile(int x, int y) {
if (!isGameStopped && !gameField[y][x].isOpen && countFlags > 0 && !gameField[y][x].isFlag) {
gameField[y][x].isFlag = true;
countFlags--;
setCellValue(x, y, FLAG);
setCellColor(x, y, Color.YELLOW);
} else if (!isGameStopped && !gameField[y][x].isOpen && gameField[y][x].isFlag) {
gameField[y][x].isFlag = false;
countFlags++;
setCellColor(x, y, Color.ORANGE);
setCellValue(x, y, "");
}
}
@Override
public void onMouseLeftClick(int x, int y) {
openTile(x, y);
}
@Override
public void onMouseRightClick(int x, int y) {
markTile(x, y);
}
}