Сапер

Рекомендованный уровеньУровень
5+
Лет 10 назад в народе ходила примета: если офисный сотрудник чересчур сосредоточенно смотрит в экран и столь же сосредоточенно периодически кликает мышкой, скорее всего, там открыта игра «Сапер». Напомним тем, кто уже забыл, и расскажем другим, кто в силу возраста эту эпоху пропустил: «Сапер» — одна из самых популярных офисных игр, которая поставлялась вместе с Microsoft Windows. И даже сегодня, если вы сидите за компьютером с операционной системой этого семейства, то «Сапер» либо уже там установлен (просто наберите в поиске ОС слово «Сапер» или «Minesweeper»), либо его можно загрузить бесплатно из Microsoft Store. Многие Linux-сборки, например KDE и GNOME, также обзавелись похожими играми. В отличие от большинства других «убивалок времени», в этой игре отлично соблюдён баланс ходов логических и ходов наудачу, что делает «Сапера» одновременно очень увлекательной и… чуть-чуть менее бессмысленной, чем другие игры этого класса. Итак, у нас есть поле, разделённое на квадраты. Какие-то из них «заминированы», но сколько таковых и где они, мы не в курсе. Наша цель — открыть все незаминированные квадраты и не подорваться. Вы открываете квадрат левой кнопкой мыши, и если под ней мины нет, то появится число, означающее количество мин, расположенных по соседству с открытой ячейкой. Теперь нужно немного посчитать и предположить, какие ячейки можно открывать, а какие следует пометить, как заминированные. И так до победы или подрыва. В Windows разработчики встроили эту игрушку для того, чтобы люди учились управляться с мышкой (да, были времена, когда у компьютера её не было, приходилось довольствоваться только клавиатурой). Но на самом деле история «Сапера» ещё более древняя, чем история Microsoft, и её предки были доступны ещё на мейнфреймах в шестидесятых годах прошлого столетия… Впрочем, речь сейчас не об этом, а о том, чтобы создать собственную версию «Сапера»! Правила у нашей «головоломки с риском» будут точь-в-точь такими, как описано выше. Мы на JavaRush уже разделили эту непростую задачу на подзадачи и будем подсказывать вам, что делать. Дерзайте.
Комментарии (110)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Anatoly4 уровень
31 мая, 13:50
Правда достаточно 5 уровней Джавараша для начала работы над игрой?
Dabangg2 уровень
пятница, 15:12
Мне вот со второго доступна, без подписки.
29 мая, 09:55
Здравствуйте! Метод openTile(int, int) должен отрисовывать MINE, если gameObject по текущим координатам является миной. Используй метод setCellValue(int, int, String). Метод openTile(int, int) должен отрисовывать количество соседей-мин, если gameObject по текущим координатам не является миной. Используй метод setCellNumber(int, int, int). Не пойму, что ему не нравится?
private void openTile(int x, int y) {
  gameField[x][y].isOpen = true;
  setCellColor(x, y, Color.GREEN);
  if(gameField[x][y].isMine)
    setCellValue(x, y, MINE);
  else
    setCellNumber(x, y, gameField[x][y].countMineNeighbors);
}
Александр16 уровень, Киев
23 мая, 14:16
Мда. Допилил до 16 лвл, можно публиковать, но багов в игре тьма
Иван2 уровень
19 мая, 12:08
Как сделать чтобы MinesweeperGame чтобы был наследников Game
Антон10 уровень
19 мая, 22:01
Алексей Ворожцов16 уровень, Нижний Новгород
14 мая, 03:43
Написал, в Идее работает как надо, выгружаю сюда - желтый экран и ничего не работает. Че за фигня?
Дмитрий18 уровень, Тверь
13 мая, 16:59
Вот такая ошибка: Error:(5, 8) java: cannot access javafx.application.Application class file for javafx.application.Application not found где взять этот класс?
Roman Vitaliy18 уровень, Харьков
13 мая, 21:05
https://javarush.ru/groups/posts/2052-razdel-igrih-na-javarush-chastjh-1-populjarnihe-voprosih - в конце этой статьи
Дмитрий18 уровень, Тверь
14 мая, 13:39
Спасибо!
деия
Кирилл10 уровень
6 мая, 08:08
Ставь класс, если разобрался как играть в "Сапер" только после того, как его написал
Roman Lobovikov3 уровень
7 мая, 19:50
Ну ты жёсткий. Я до сих пор его не написал.
Кирилл10 уровень
8 мая, 04:13
Дык там шестой пункт и есть самый запутанный)
Roman Lobovikov3 уровень
9 мая, 16:00
Для меня сложных этапов было побольше. 6-й самый сложный. Я там психовал, больше 30 раз проверку нажимал :D Ну ещё вроде 10-й. Сегодня дошёл до конца, но что-то не уверен, что моя программа корректно работает, потому что нигде не вижу подсчёт очков. К тому же, я на каком-то этапе прошёл успешно проверку (там про флаги что-то было), но у меня эти флаги как-то коряво ставились, а потом вообще правая кнопка переставала работать. Тогда я пошёл в помощь и просто скопировал чужой код. После этого флаги ставились и убирались без всяких проблем. Вот и сейчас думаю посмотреть как у других людей реализован подсчёт очков. Где они должны отображаться непонятно!
Kostya Chernyaev0 уровень
29 апреля, 06:43
Что за ошибка? com/javarush/games/minesweeper/part02/MinesweeperGame.java:7: error: illegal start of expression private static final int SIDE = 9; ^