Я создаю игру-головоломку, похожую на Отелло, и я хотел бы создать учебный режим, который поможет игроку изучить игру. Чтобы сделать это, мне нужно обнаружить горизонтальные, вертикальные и диагональные линии смежных значений (в данном случае, белого или черного), чтобы показать игроку возможные следующие шаги, которые он может сделать …
Я строю это в C ++, но меня действительно интересуют общие стратегии, которые я могу использовать для обнаружения линий с использованием 2D-матрицы (или 1D-массива, если это упрощает вещи).
Моя текущая стратегия довольно проста, что заставляет меня подозревать, что это самый медленный способ сделать это …
for y = 0 to 7
for x = 0 to 7
cell = find the first unoccupied cell (no color)
inspect the 8 surrounding cells to see if they contain a color
if so, trace the cells in that direction to see if it forms a line of at least 3 contiguous colors
if so, store the coords of those cells in a list of detected lines
Другие идеи?
Заранее спасибо за вашу мудрость!
Кластеризация и в частности иерархическая кластеризация может быть полезным
Других решений пока нет …