По кирпичику...

Как-то с другом мы придумали термин «сон-тайм» для обозначения режима работы над своим проектом, если работой по найму занято всё остальное время. «Сон-тайм» в противовес «фул-тайм». И что-то этот сон-тайм мне не очень-то нравится... Но покуда работа в офисе остаётся, единственное, что я могу сделать, это черпать вдохновение из своего видения и не роптать : )

Итак, начну подробнее прорабатывать каждую из сущностей, которые всплыли в результате небольшого мозгового штурма, проведённого в прошлый раз.

Ну, собственно, к делу.

Сначала разберёмся с ячейками. Они могут быть двух видов: с бомбой или с цифрой — количеством бомб в соседних ячейках. Думаю, это будут два разных типа BombCell и NumberCell, потомки абстрактного типа Cell. Базовый тип будет содержать защищённую булеву переменную, которая будет хранить информацию, была ли ячейка открыта или нет. Да, для бомбы как будто это не акутально — её можно открыть только один раз, и игра закончится. Но кто сказал, что это будет обычный сапёр? ;) Буду всё-таки стараться писать наиболее гибко. Не выходя, однако, за рамки разумного (а также доброго и вечного, конечно).

Также базовый тип будет содержать виртуальную функцию Open() с целочисленным типом возвращаемого значения. Это будет количество бомб в округе, или, скажем минус единица в случае, если открытая ячейка — бомба. Каждый класс-потомок будет реализовывать эту функцию сам. В базовой реализации сделаю только простановку флага, что мол ячейка открыта.

Получается примерно такая картинка:

Диаграмма классов ячеек

Тип ячейки-бомбы чрезвычайно прост. Всё, что ему требуется сделать — это переопределить базовый метод Open() и вернуть в нём минус единицу (индикатор бомбы). Ячейка-циферка же ничуть не сложнее. Разве что в её конструктор нужно будет передать количество бомб-соседей, дабы она его хранила и возвращала при открытии.

Ну и с ячейками пока похоже что всё.

02.03.2011