Я работал над настольной игрой с шестигранной сеткой, такой как эта доска:
Поскольку доска никогда не изменится, и пробелы на плате всегда будут связаны с одними и теми же пробелами вокруг нее, должен ли я просто жестко кодировать каждый пробел со значениями, которые мне нужны? Или я должен использовать различные алгоритмы для расчета ссылок и обходов?
Если быть более точным, моя настольная игра - это игра для 4 игроков, в которой каждый игрок имеет гекс-сетку 5x5x5x5x5x5 (опять же, изображение выше). Цель состоит в том, чтобы добраться от нижней части сетки к вершине, с различными препятствиями на пути, и каждый игрок может атаковать друг друга с края своей сетки на других игроков на основе множителя дальности.
Поскольку сетка игроков никогда не изменится, и расстояние любого произвольного пространства от края сетки всегда будет одинаковым, следует ли просто жестко кодировать это число в каждом из пространств, или я все равно должен использовать алгоритм поиска в ширину, когда игроки атакуют?
Единственный недостаток, который я могу придумать для жесткого кодирования всего, это то, что я собираюсь кодировать 9+ 2 (5 + 6 + 7 + 8) = 61 отдельная ячейка. Есть ли что-то еще, что мне не хватает, что я должен рассмотреть использование более сложных алгоритмов?
int numberOfHexagonsInArea(int rows) { int area = 1; while(rows>0) { area += (rows-1)*6; rows--; } return area; }
{X,Y}
вас, очевидно, можно пойти {X-1, Y}
и {X+1, Y}
на один ряд. В строках ниже и выше вы можете перейти к {X, Y-1}
и {X, Y+1}
. Наконец, в зависимости от четно-ности Y
, вы можете пойти {X-1, Y-1}
и {X-1, Y+1}
или {X + 1, Y-1} `и{X+1, Y+1}