По этот сайт, я хочу представить лабиринт с 2-мерным массивом из 16-битных целых чисел.
Каждое 16-битное целое число должно содержать следующую информацию:
Здесь один из способов сделать это (это далеко не единственный путь): сетка лабиринтов 12x16 может быть представлена как массив m [16] [12] из 16-битных целых чисел. Каждый элемент массива будет содержать всю информацию для одной соответствующей ячейки в сетке, причем целочисленные биты отображаются следующим образом:
alt text http://www.mazeworks.com/mazegen/mazetut/tut5.gif
Чтобы сбить стену, установить границу или создать конкретный путь, все, что нам нужно сделать, это перебросить биты в один или два элемента массива.
Как использовать побитовые флаги для 16-битных целых чисел, поэтому я могу установить каждый из этих битов и проверить, установлены ли они.
Я хотел бы сделать это легко читаемым способом (например, Border.W, Border.E, Walls.N и т.д.).
Как это вообще делается на С++? Я использую hexidecimal для представления каждого из них (например, Walls.N = 0x02, Walls.E = 0x04 и т.д.)? Должен ли я использовать перечисление?
См. также Как вы устанавливаете, очищаете и переключаете один бит?.