Стратегии для обнаружения смежных значений в матрице 8×8

Я создаю игру-головоломку, похожую на Отелло, и я хотел бы создать учебный режим, который поможет игроку изучить игру. Чтобы сделать это, мне нужно обнаружить горизонтальные, вертикальные и диагональные линии смежных значений (в данном случае, белого или черного), чтобы показать игроку возможные следующие шаги, которые он может сделать …

введите описание изображения здесь

Я строю это в 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

Другие идеи?

Заранее спасибо за вашу мудрость!

2

Решение

Кластеризация и в частности иерархическая кластеризация может быть полезным

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector