Сапер

Рекомендованный уровеньуровень
5+
Лет 10 назад в народе ходила примета: если офисный сотрудник чересчур сосредоточенно смотрит в экран и столь же сосредоточенно периодически кликает мышкой, скорее всего, там открыта игра «Сапер». Напомним тем, кто уже забыл, и расскажем другим, кто в силу возраста эту эпоху пропустил: «Сапер» — одна из самых популярных офисных игр, которая поставлялась вместе с Microsoft Windows. И даже сегодня, если вы сидите за компьютером с операционной системой этого семейства, то «Сапер» либо уже там установлен (просто наберите в поиске ОС слово «Сапер» или «Minesweeper»), либо его можно загрузить бесплатно из Microsoft Store. Многие Linux-сборки, например KDE и GNOME, также обзавелись похожими играми. В отличие от большинства других «убивалок времени», в этой игре отлично соблюдён баланс ходов логических и ходов наудачу, что делает «Сапера» одновременно очень увлекательной и… чуть-чуть менее бессмысленной, чем другие игры этого класса. Итак, у нас есть поле, разделённое на квадраты. Какие-то из них «заминированы», но сколько таковых и где они, мы не в курсе. Наша цель — открыть все незаминированные квадраты и не подорваться. Вы открываете квадрат левой кнопкой мыши, и если под ней мины нет, то появится число, означающее количество мин, расположенных по соседству с открытой ячейкой. Теперь нужно немного посчитать и предположить, какие ячейки можно открывать, а какие следует пометить, как заминированные. И так до победы или подрыва. В Windows разработчики встроили эту игрушку для того, чтобы люди учились управляться с мышкой (да, были времена, когда у компьютера её не было, приходилось довольствоваться только клавиатурой). Но на самом деле история «Сапера» ещё более древняя, чем история Microsoft, и её предки были доступны ещё на мейнфреймах в шестидесятых годах прошлого столетия… Впрочем, речь сейчас не об этом, а о том, чтобы создать собственную версию «Сапера»! Правила у нашей «головоломки с риском» будут точь-в-точь такими, как описано выше. Мы на JavaRush уже разделили эту непростую задачу на подзадачи и будем подсказывать вам, что делать. Дерзайте.
Комментарии (678)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
вчера, 07:17
Добрый день всем, я увидел этот раздел и мне сразу же стало очень интересно его потыкать, но тут я столкнулся совсеееем с неизвестными мне задачами по типу объявления классов и переопределения, я прошёл 6 уровней и тут показано 5+. я ещё не дошёл до нужных статей или же чтобы это решать надо отдельно что-то смотреть. буду благодарен за ответ
madmax дизайнер из Санкт-Петербу
18 июля, 14:59
Добрый день. Подскажите пожалуйста движок в виде jar файла можно где нибудь взять?
Anonymous #3429554
Уровень 11
13 июля, 10:17
private void createNewNumber(){ int x = getRandomNumber(SIDE); int y = getRandomNumber(SIDE); if (gameField[x][y] == 0){ gameField[x][y] = getRandomNumber(10) < 9 ? 2 : 4; } else { createGame(); } В чём проблема такой реализации метода
Сергей Витхин
Уровень 26
13 июля, 08:53
c валидатором проблемы,5 раз не пропускал, только из за лишней пустой строки перед последней скобкой
Lismu
Уровень 2
16 июня, 06:30
private void createGame(){
        for (int x = 0; x < SIDE; x++){
            for (int y = 0; y < SIDE; y++){
                gameField[x][y] = new GameObject(x,y);
                setCellColor(gameField[x][y].x, gameField[x][y].y, Color.YELLOW);
            }
        }
    }
Не пойму, почему не проходит проверку в этом пункте 4-го шага - "В методе createGame() нужно заполнить все ячейки массива gameField новыми объектами типа GameObject с соответствующими координатами x и y."
Анжелика
Уровень 30
7 июля, 16:08
В поле gameField наоборот x - ширина и y - высота, попробуйте gameField[y][x].
madmax дизайнер из Санкт-Петербу
14 июля, 15:19
как вы до этого дошли? это же абсолютно не очевидно, и я не уверен, что это логично тоже не проходила валидация и ваш коммент мне помог
Анжелика
Уровень 30
15 июля, 19:37
У меня была такая же ошибка :) помогли другие комментарии, а потом увидела что в одной из игр в условии написали что в движке координаты x и y не так как мы привыкли.
Anonymous #3460805
Уровень 1
7 июня, 10:51
Супер
Anonymous #3455852
Уровень 1
27 мая, 06:55
Super
Viacheslav B. System Administrator
8 мая, 10:45
у IDEA , import com.javarush.engine.cell.Game; - каже що не може resolve "javarush".
Константин Инженер АСУ ТП в Газоперекачка
23 мая, 19:03
У Вас решился вопрос с импортом com.javarush.engine.cell ?
Viacheslav B. System Administrator
27 мая, 16:39
так, видалив плагін Javarush та видалив ще SDK - Javarush SDK . перезапустив IDEA, потім знов встановив плагін Javarush, плагін знов завантажив SDK, де була вже бібліотека com.javarush.engine.cell.Game; це вирішило проблему з import , але не розібрався як запускати у IDEA бо скаржитися що відсутній метод main. пробував щось ліпити щось від себе , не запрацювало (
Ва Дим
Уровень 26
3 мая, 08:22
Только сейчас заметил что код изменился.Получается нужно просто проходить задание и не важно как филигранно ты напишеш всеравно в дальнейшем валидатор поставит свой код.Как то это грусно.Сейчас смотрю на код и вижу что писал его точно не я
Kim
Уровень 15
1 июля, 07:33
Но это ж наобород хорошо. Ведь можно увидеть как лучше можно написать. Это своего рода обучение - как ты сделаешь, а как сделает мастер. 😉
madmax дизайнер из Санкт-Петербу
14 июля, 16:04
а если я пишу код лучше мастера в таком случае что делать?)
madmax дизайнер из Санкт-Петербу
14 июля, 16:06
private static final int MINE = 0;
boolean isMine = getRandomNumber(10) == MINE;
boolean isMine = getRandomNumber(10) < 1;
какой вариант тебе кажется лучше?
mikhailkuzmin Java Developer
24 апреля, 20:56
Почему-то на 20 уровне перестали задачи в IDEA на плагине синхронизироваться с сервером. В IDEA больше не видно условий задач и проверку нельзя сделать. А еще все решения задач 19 уровня в IDEA потерялись.