Сапер

Рекомендованный уровеньуровень
5+
Лет 10 назад в народе ходила примета: если офисный сотрудник чересчур сосредоточенно смотрит в экран и столь же сосредоточенно периодически кликает мышкой, скорее всего, там открыта игра «Сапер». Напомним тем, кто уже забыл, и расскажем другим, кто в силу возраста эту эпоху пропустил: «Сапер» — одна из самых популярных офисных игр, которая поставлялась вместе с Microsoft Windows. И даже сегодня, если вы сидите за компьютером с операционной системой этого семейства, то «Сапер» либо уже там установлен (просто наберите в поиске ОС слово «Сапер» или «Minesweeper»), либо его можно загрузить бесплатно из Microsoft Store. Многие Linux-сборки, например KDE и GNOME, также обзавелись похожими играми. В отличие от большинства других «убивалок времени», в этой игре отлично соблюдён баланс ходов логических и ходов наудачу, что делает «Сапера» одновременно очень увлекательной и… чуть-чуть менее бессмысленной, чем другие игры этого класса. Итак, у нас есть поле, разделённое на квадраты. Какие-то из них «заминированы», но сколько таковых и где они, мы не в курсе. Наша цель — открыть все незаминированные квадраты и не подорваться. Вы открываете квадрат левой кнопкой мыши, и если под ней мины нет, то появится число, означающее количество мин, расположенных по соседству с открытой ячейкой. Теперь нужно немного посчитать и предположить, какие ячейки можно открывать, а какие следует пометить, как заминированные. И так до победы или подрыва. В Windows разработчики встроили эту игрушку для того, чтобы люди учились управляться с мышкой (да, были времена, когда у компьютера её не было, приходилось довольствоваться только клавиатурой). Но на самом деле история «Сапера» ещё более древняя, чем история Microsoft, и её предки были доступны ещё на мейнфреймах в шестидесятых годах прошлого столетия… Впрочем, речь сейчас не об этом, а о том, чтобы создать собственную версию «Сапера»! Правила у нашей «головоломки с риском» будут точь-в-точь такими, как описано выше. Мы на JavaRush уже разделили эту непростую задачу на подзадачи и будем подсказывать вам, что делать. Дерзайте.
Комментарии (495)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Savely Shipkov
Уровень 4
19 октября, 11:06
Я не понимаю почему в ТЗ не пишут описание метода. "метод getNeighbors, который принимает один параметр типа GameObject (ячейку)", а что возвращает, где находится? Не единственный случай. Не трудно ведь написать про это. Ладно бы хоть где-то это всё было(м.б. где-то и есть, но в ссылках, данных во вступлении я не нашёл). Подскажите, пожалуйста
Константин В.
Уровень 22
20 октября, 08:24
метод принимает объект типа GameObject. Возвращает список соседних объектов. На 4 уровне думаю рановато решать такие задачи
Savely Shipkov
Уровень 4
undefined, 09:33
Проблема не в уровне. Проблема была в формулировке "теперь у тебя есть метод". Я нашёл человека с таким комментарием. Оказывается надо его написать. По-моему "у тебя есть" и "надо написать" не воспринимаются одинаково. Спасибо за Ваш ответ P.S. кому-то может и рановато;)
Иванов Дмитрий
Уровень 13, Борисоглебск, Russian Federation
18 октября, 14:19
эхх... застрял на 4 пункте. 😒 Не разобрался в двумерных массивах и решил пропустить... теперь аукнулось😫
Anonymous #2839114
Уровень 2, Санкт-Петербург, Russian Federation
4 октября, 09:23
Перестала работать кнопка помощь с надписью правильное решение !
Sea_hawk
Уровень 5, Russian Federation
29 сентября, 04:30
Не понял, для чего "setScore(score);". Не вижу, где отображаются текущие очки
Konstantin Medical Interpreter в Hospital
26 сентября, 17:29
А почему не получается записать поле как массив ведь это то что нам нужно? не понятно (( Ведь это совсем не похоже на игровое поле)
Konstantin Medical Interpreter в Hospital
26 сентября, 17:45
Открыл это в другом браузере стало по легче, что-то сафари не корректно отображает ((
Zlata
Уровень 10, Калининград
22 сентября, 10:00
Dimsos
Уровень 14, Краснодар, Russian Federation
18 сентября, 21:59
Я не могу начать писать код. Не определяется курсор в поле для реализации кода.
Mr. Shmel
Уровень 15, Szczecin, Польша
20 сентября, 11:09
Ты должен создать в Дереве классов, новый класс согласно условиям :)
Dimsos
Уровень 14, Краснодар, Russian Federation
20 сентября, 11:42
Спасибо мужик)
romanluciv99
Уровень 1, Ukraine
18 сентября, 17:39
private static GameObject[][] gameField=new GameObject[SIDE][SIDE];
romanluciv99
Уровень 1, Ukraine
18 сентября, 17:39
private static GameObject[][] gameField=new GameObject[SIDE][SIDE];
Anonymous #2732383
Уровень 17, Киев
10 сентября, 09:31
private static GameObject[][] gameField=new GameObject[SIDE][SIDE];
Убедись, что матрица (двумерный массив) gameField имеет размер SIDExSIDE! Как еще убедится?!
Anonymous #2732383
Уровень 17, Киев
10 сентября, 09:58
Разобрался - лишнее слово
static