Найти в Дзене
Плохой Программист

Описываем ячейку в Сапере на JavaScript

По сути, поняв что нам нужно от ячейки, мы уже львиную работу проделали. Осталось только это все перевести с русского на жаваскриптовый.

Тут как и везде перевод может быть хороший, может быть не очень.

Мой вариант вот )

Главное для ячейки сапера
Главное для ячейки сапера

Ну тут ничего особенного - у каждой ячейки есть её адрес на поле (строка i и столбец j), статус (открыта, закрыта, под флагом), заминирована ли, если есть мины вокруг, то она знает сколько их, ну и сама ячейка как физический элемент на веб-странице.

Самое главное что можно сделать с ячейкой - кликнуть по ней.

Клики по ячейкам
Клики по ячейкам

Кликнуть по ячейке можно только если закрыта, если она уже открыта или под флагом - то усилия бесполезны.

При открытии ячейки несколько меняется её дизигн, дабы визуально было понятно, что действие было выполнено.

Далее по открытии нас ждут варианты:

  • ячейка заминирована и мы проиграли
  • ячейка рядом с минами и мы выводим красивую циферку
  • ячейка пустая и мы отдыхаем и ничего не делаем

Еще есть такой момент, что не всегда ячейка открывается по клику, иногда она должна открываться сама по себе - например когда мы проиграли, вскроется все, или когда мы нажали на пустую ячейку и автоматически открыли все вокруг.

Я назвала этот процесс имитацией клика.

Что еще можно сотворить с ячейкой? Поставить под флаг!

Расстановка флагов
Расстановка флагов

Флагов у нас не бесконечно много - их столько сколько мин.

Правой кнопкой можно поставить флаг:

  • ставим только на закрытую ячейку, если флаги не кончились
  • меняем статус, перерисовываем флаг, уменьшаем количество флагов

Если флаг уже стоит правой кнопкой он убирается и все остальные значения - статус и количество доступных флагов возвращается в исходное состояние.

Исключительно визуальная красота
Исключительно визуальная красота

.... продолжение следует ....