Есть у меня идея разработать программу помощник для разбора и анализа партий. Программа должна состоять из 3-х модулей:
1. Интерфейсный модуль – который отвечает за отображение игры и взаимодействие с пользователем. Этот модуль может быть частью удаленного клиентского приложения.
2. Блок анализа, который содержит информацию о текущем состоянии игры и взаимодействовать с базой данных.
3. База данных. Должна содержать в себе информацию об игроках, сыгранных играх и позициях.
Интерфейсный модуль может быть как windows приложением, так и java аплетом. Он должен уметь взаимодействовать с пользователем, сохранять и загружать партии, выдавать рекомендации и аналитику позиции, формировать запросы к базе данных.
Блок анализа содержит информацию о текущей позиции, угрозах из 4-ок, 3-ек, обозов, и пауз, может решать VCF последовательности (победа на 4-ках) и VCT (победа на 3-х) последовательности на заданную глубину, оценивать возможные ходы по заданным критериям и предлагать лучшие. При взаимодействии с базой данной блок приводит позицию к стандартному значению и формирует критерии, которые позволяют ускорить выборку из базы данных.
База данных должна быть построена на сервере базы данных, например MySQL, Firebird, Oracle. Она должна хранить в себе информацию об игроках, играх, позициях. Позиции должны содержать в себе информацию о положении камней на доске, ходах, которые приводят к победам, поражениям, ходах помеченных как нейтральные и еще не сделанные.
В целом система должна функционировать следующим образом. Пользователь делает ход. Модуль анализа связывается с базой данных и если находит в ней информацию о позиции, то предлагает варианты ответа, которые содержатся в базе данных. Если выбирается вариант, которого нет в базе данных, то производится задействование модуля анализа. В случае если находятся выигрышные последовательности той или иной стороны, то данный ход может быть записан как выигрышный, нейтральный или проигрышный, и занесен в базу данных с соответствующим признаком с указанием причины, например выигрыш на 4-ках и 3-ках, или выигрыш при любом ответе противоположенной стороны. При этом выигрышные последовательности ходов в систему заноситься не будут, но могут быть сгенерированы по запросу блоком анализа. Это позволит сократить объем информации хранимой в базе данных.
Можно заставить систему работать так, что бы она анализировала в автоматическом режиме возможные ходы помеченных в базе данных как нейтральные или еще не сделанные. Для обучения системы можно использовать базы сыгранных партий. Прежде чем заносить ходы в базу данных они будут пропускаться через блок анализа с тем, что бы отсеять ошибочные ходы.
На данный момент я реализовал на Delphi 2007 в минимальном виде модуль отображения, который отображает доску и позволяет делать ходы. Работаю над модулем анализа, сделал построение списка угроз и ответов для 4-к и 3-к. Смог сделать VCF – поиск победы на 4-ках. Приступаю к реализации построения списка обозов и после этого можно приступать к VCT - поиск победы на 3-ках. Это, как мне кажется, самый тяжелый участок для реализации. После этого можно формировать списки пауз. Базы данных ещё не трогал.
К сожалению, задумка затягивается за неимением времени. К тому же я не обладаю необходимой квалификации для работы с графикой. Если кто заинтересовался данным проектом и желает принять в нем участие, прошу откликнуться.