Два раза я должен был сделать это, я создал play_line
тип данных.У меня был канонический граф с узлами и ребрами;play_line
- это последовательность ребер.
Допустимое перемещение к свободному соседнему пересечению - тривиальное свойство только из графа.Кусок A
в узле m
может переместиться в любой узел n
, где существует
Переход с m
, на n
, на p
существует там, где существует
- edge (m, n)
- edge (n,p) существует
- узел
n
содержит кусок D
(защитник) - узел p пуст
- вдоль
play_line
содержащего ребро (m, n), (n, p) - следующее ребро в этой строке.
Помогает ли это?
Обновление после комментария OP
Для объектов play_line
нечего поддерживать, так как игровые линии не меняются после инициализации.Они жестко запрограммированы на игровом поле, что является улучшением графика.Например, если доска помечена
a
b c d e f
g h i j k
l m n o p
q r s
, то первая полная строка представляет собой игровую линию, содержащую пять узлов по порядку, [b, c, d, e, f]
.Имеются соответствующие ребра графа (правильные по построению) (b, c), (c, d), (d, e), (e, f)
.Обратите внимание, что ваш код должен либо пройти через это в любом направлении, либо вы делаете секунду play_line
в обратном порядке.