Скрин прилагаю
На данном этапе мы займемся открытием ячеек. Давай создадим метод, отвечающий за это, и переменную, которая будет хранить состояние ячейки (открыта или нет).
При открытии ячейки метод будет:
- рисовать в ячейке мину, если там мина;
- отображать количество мин-соседей, если в ячейке нет мины;
- отмечать ячейку модели открытой;
- менять цвет ячейки.
Символ мины для удобства предлагаем вынести в отдельную переменную-константу. Когда ячейка должна открываться? Правильно, при клике по ней левой кнопкой мыши. Для обработки такого нажатия существует специальный метод движка — onMouseLeftClick(int, int).
Давай переопределим его в нашем классе. Он будет вызывать метод открытия ячейки.
Ну и, конечно же, запусти программу и насладись результатом работы.
Требования:
- В классе MinesweeperGame должно существовать приватное статическое final поле String MINE, инициализированное при объявлении. Например, использовать можно UTF-16 символ мины "\uD83D\uDCA3".
- В классе MinesweeperGame должен существовать приватный метод void openTile(int x, int y).
- Метод openTile(int, int) должен отрисовывать MINE, если gameObject по текущим координатам является миной. Используй метод setCellValue(int, int, String).
- Метод openTile(int, int) должен отрисовывать количество соседей-мин, если gameObject по текущим координатам не является миной. Используй метод setCellNumber(int, int, int).
- В классе GameObject должно существовать публичное поле isOpen типа boolean.
- В методе openTile(int, int) элементу матрицы gameField должно устанавливаться значение поля isOpen, равное true, и отрисовываться фон ячейки с помощью метода setCellColor(int, int, Color). Например, в Color.GREEN.
- В классе MinesweeperGame должен быть переопределен метод onMouseLeftClick(int, int) родительского класса Game.
- В методе onMouseLeftClick(int, int) должен быть вызван метод openTile(int, int).
package com.javarush.games.minesweeper;
public class GameObject {
public int x;
public int y;
public boolean isMine;
public int countMineNeighbors;
GameObject(int x, int y, boolean isMine) {
this.x = x;
this.y = y;
this.isMine = isMine;
}
}