Я планирую сделать детскую версию пасьянса «Маджонг» (начиная с макета доски «Черепаха» и постепенно продвигаясь дальше). Я пытаюсь понять, как хранить данные для каждого слоя набора плиток макета черепахи. См. пример здесь: http://icarus.cs.weber.edu/~dab/cs3230/labs/lab.5/tile_layers.pdf
Обычно я бы использовал 2D-массив для каждого слоя и 1D-массив слоев от 0 (самый нижний) до 4 (самый верхний) с учетом слоев выше этого (5, 6, ...). Однако есть плитки, которые занимают более одной строки и/или столбца одновременно. Например, на слое 0 (самый нижний) крайняя левая плитка и две крайние правые плитки занимают две строки одновременно, а одна плитка на слое 4 (самая верхняя) занимает два столбца и два. ряды одновременно.
Какова наилучшая модель данных для хранения такого набора плиток? Должен ли каждый тайл иметь флаг для сдвига его наполовину в следующую строку и следующий столбец?
Я думаю, есть объект Tile
, каждый экземпляр которого представляет 1 из 144 плиток на доске. Затем все тайлы упорядочиваются по слоям, как я описал выше (2D-массив для каждого слоя, все слои хранятся в 1D-массиве).
Примечание. Я рассматриваю возможность использования Javascript и HTML5 для этого проекта. Это не будет что-то, что я опубликую, просто упражнение по программированию.
Это лучший метод? Я что-то упускаю?