самое простое перебором.
например, номера полей можно задать так:
по игрику десятки по иксу единицы - пример 23: второй ряд, третий столб
после чего циклами перебрать все направления:
для проверок нужных клеток получаем их номера +-10 по вертикали, +-1 по горизонту, по диагонялям соотвественно и десятки и единицы менять.
Кол-во вхождений цикла ограничивается:
1 кол-вом ходов
2 пока не выйдем за рамки поля
3 пока не достигнем целевой клетки с которой можем произвести действие
по восем цыклов на объект. кол-во цыклов можно снижать если попадается достаточное условие. Например в шашках при проверки наличия ходов, нужно обрывать проверку при первом положительном результате.
Я так делал шашки когда-то: проверял наличие хода вообще, подсказку для движения выбранной шашки/дамки, блокировка хода если была возможность "сожрать" противника и несколько разных опций в зависимости от выбора правил игры.
Возможно это делается по-умному, какими-нибудь битовыми операциями и матрицами...