Представление данных Gomoku в C

Я работаю над игрой Gomoku, в настоящее время я использую GUI и т. Д., И мне нужно кодировать IA и Rule Checker (для необязательных правил, таких как Capture, запрещенные шаблоны и т. Д.).
Я планировал представить доску с массивом int что-то вроде:

uint goban[361];

Который будет представлять 19 * 19 Гобан (доска). Допустим, мы можем разделить 32-битное целое число на 4 байта, и внутри каждого байта мы можем хранить метаданные, например, так:

  • 1-й байт: этот случай пустой / черный / белый?
  • 2-й байт: является ли этот случай частью специального шаблона?
  • 3-й байт: в каком положении шаблона я?
  • 4-й байт: могу ли я захватить?

Я не знаю, подходит ли такое решение для ИИ Гомоку, но главная проблема, которую я имею, состоит в том, как написать это правильно. Давайте возьмем образец:

 -OO-O-

Это открытый & три свободные, у него есть пространство внутри и на конце. Как я должен связать этот шаблон со статическим представлением без координат?

Еще одна проблема заключается в том, когда мне следует обновить шаблон и как, потому что из 361 случая это может быть довольно долго, если я обновлю предыдущий рисунок так:

 XOO-O-

Я должен обновить все четыре случая, так что я не думаю, что это уместно, плюс это может повлиять на многие другие вертикальные / диагональные узоры.

Должен ли я сделать список шаблонов в настоящее время на карте, как это:

std::list<ThreatList> tlist;

и сделать карту простым трибуном или массивом символов?

Я хочу, чтобы мое представление данных давало мне максимум информации для быстрого обновления карты влияния, которая была бы заполнена моей оценочной функцией. Я прочитал несколько вещей о поиске в пространстве угроз и другом алгоритме Гомоку, но они не говорят о представлении данных, и я не понимаю, как это сделать правильно, не могли бы вы помочь мне найти чистый способ представления шаблона и как обновить их.

Спасибо вам.

0

Решение

Взгляните на этот открытый исходный код Gomoku:
https://github.com/garretraziel/gomoku

Я думаю, что вы найдете там много интересных идей.

0

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

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