По сути, поняв что нам нужно от ячейки, мы уже львиную работу проделали. Осталось только это все перевести с русского на жаваскриптовый.
Тут как и везде перевод может быть хороший, может быть не очень.
Мой вариант вот )
Ну тут ничего особенного - у каждой ячейки есть её адрес на поле (строка i и столбец j), статус (открыта, закрыта, под флагом), заминирована ли, если есть мины вокруг, то она знает сколько их, ну и сама ячейка как физический элемент на веб-странице.
Самое главное что можно сделать с ячейкой - кликнуть по ней.
Кликнуть по ячейке можно только если закрыта, если она уже открыта или под флагом - то усилия бесполезны.
При открытии ячейки несколько меняется её дизигн, дабы визуально было понятно, что действие было выполнено.
Далее по открытии нас ждут варианты:
- ячейка заминирована и мы проиграли
- ячейка рядом с минами и мы выводим красивую циферку
- ячейка пустая и мы отдыхаем и ничего не делаем
Еще есть такой момент, что не всегда ячейка открывается по клику, иногда она должна открываться сама по себе - например когда мы проиграли, вскроется все, или когда мы нажали на пустую ячейку и автоматически открыли все вокруг.
Я назвала этот процесс имитацией клика.
Что еще можно сотворить с ячейкой? Поставить под флаг!
Флагов у нас не бесконечно много - их столько сколько мин.
Правой кнопкой можно поставить флаг:
- ставим только на закрытую ячейку, если флаги не кончились
- меняем статус, перерисовываем флаг, уменьшаем количество флагов
Если флаг уже стоит правой кнопкой он убирается и все остальные значения - статус и количество доступных флагов возвращается в исходное состояние.
.... продолжение следует ....