Сапер

Рекомендованный уровеньУровень
5+
Лет 10 назад в народе ходила примета: если офисный сотрудник чересчур сосредоточенно смотрит в экран и столь же сосредоточенно периодически кликает мышкой, скорее всего, там открыта игра «Сапер». Напомним тем, кто уже забыл, и расскажем другим, кто в силу возраста эту эпоху пропустил: «Сапер» — одна из самых популярных офисных игр, которая поставлялась вместе с Microsoft Windows. И даже сегодня, если вы сидите за компьютером с операционной системой этого семейства, то «Сапер» либо уже там установлен (просто наберите в поиске ОС слово «Сапер» или «Minesweeper»), либо его можно загрузить бесплатно из Microsoft Store. Многие Linux-сборки, например KDE и GNOME, также обзавелись похожими играми. В отличие от большинства других «убивалок времени», в этой игре отлично соблюдён баланс ходов логических и ходов наудачу, что делает «Сапера» одновременно очень увлекательной и… чуть-чуть менее бессмысленной, чем другие игры этого класса. Итак, у нас есть поле, разделённое на квадраты. Какие-то из них «заминированы», но сколько таковых и где они, мы не в курсе. Наша цель — открыть все незаминированные квадраты и не подорваться. Вы открываете квадрат левой кнопкой мыши, и если под ней мины нет, то появится число, означающее количество мин, расположенных по соседству с открытой ячейкой. Теперь нужно немного посчитать и предположить, какие ячейки можно открывать, а какие следует пометить, как заминированные. И так до победы или подрыва. В Windows разработчики встроили эту игрушку для того, чтобы люди учились управляться с мышкой (да, были времена, когда у компьютера её не было, приходилось довольствоваться только клавиатурой). Но на самом деле история «Сапера» ещё более древняя, чем история Microsoft, и её предки были доступны ещё на мейнфреймах в шестидесятых годах прошлого столетия… Впрочем, речь сейчас не об этом, а о том, чтобы создать собственную версию «Сапера»! Правила у нашей «головоломки с риском» будут точь-в-точь такими, как описано выше. Мы на JavaRush уже разделили эту непростую задачу на подзадачи и будем подсказывать вам, что делать. Дерзайте.
Комментарии (253)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Ярослав0 уровень
Friday, 05:49
что то классов нет!
Andrey Khalepov10 уровень, Владивосток
20 May, 08:06
Не пойму что не нравится валидатору. Подскажите кто знает. Выводил в консоль содержимое массива. Все там проинициализировано. private void createGame() { for (int i = 0; i < SIDE; i++) { for (int j = 0; j < SIDE; j++) { gameField[i][j] = new GameObject(i, j); setCellColor(i, j, Color.ORANGE); } } }
20 May, 13:01
У игрового поля и у матрицы системы координат реверсированы относительно друг друга. Попробуйте этот цикл не на квадратной матрице, а на прямоугольной. Почему ошибка?
Alex Go20 уровень, Apatity
20 May, 17:33
В Вашем случае вот так верно:
gameField[j][i] = new GameObject(i, j);
Andrey M.9 уровень, Санкт-Петербург
15 May, 11:09
Ребят подскажите, пишу игру в Идеи, но условие получил только первого уровня из 16-ти. Сделал уже 3 уровня на сайте, а как получать новые шаги заданий в идеи?
Ivan5 уровень, Санкт-Петербург
17 May, 17:31
Нашел решение - оказывается, в IDEA новые условия заданий надо открывать как отдельные новые задачи. Они становятся доступными в общем списке задач.
Andrey M.9 уровень, Санкт-Петербург
18 May, 08:22
Точняк))) Спасибо Бро! )) 👍
Антон13 уровень, Санкт-Петербург
9 May, 09:57
с планшета не возможно создать класс игры в дереве проекта
Елена Попова23 уровень
6 May, 11:49
Очень нелогично хранить цвет ячейки отдельно от самой ячейки(в свойстве объекта Game а не в GameObject). Лучше было бы сделать интерфейс для GameObject, который включал бы в себя методы для работы как с координатами так и с цветом.
Afac8 уровень, Москва
14 May, 22:16
Почему же? Очень даже логично. Ячейка - это часть игрового поля, а GameObject - это объект отдельный от поля. Условия поведения ячейки и gameObject могут быть совершенно разными и не пересекаться. Например, вы играете на время, и каждые 5 секунд цвет должен тускнеть. Тогда вы должны работать с ячейкой, а не с объектом.
руслан2 уровень, Москва
3 May, 10:16
y
samandar0 уровень
2 May, 14:16
privet
Aлексей8 уровень
25 April, 14:30
Как исправить эту ошибку
Aлексей8 уровень
25 April, 13:39
как подключить игровой движок к IDE
27 April, 10:54
нужно установить плагин в Идею и он все подгрузит(нужен секретный ключ или можно скачать проект для решения задач javarush, открыть его в идее, там уже должен быть секретный ключ). Секретный ключ в разделе: "Аккаунт - настройки - показать секретный ключ". Проект и плагин: "Аккаунт - загрузки". P.S. Чтоб запускалось в идее, надо либо качать JDK8, либо установить JavaFX