RU64

игровая программа по русским шашкам

Формат Kallisto

Программа RU64 является интерфейсной оболочкой для игровых модулей, выполненных по спецификации Kallisto. Автором этого формата является Игорь Коршунов, его домашняя страница доступна по ссылке: http://igorkorshunov.narod.ru

Игровой модуль в формате Kallisto - это 32-битная динамически загружаемая библиотека функций для операционной системы Windows, файл с расширением имени .dll Состав экспортируемых функций такой библиотеки может до определенной степени меняться.

Список функций

Для того чтобы игровой модуль мог быть подключен к программе RU64, он должен иметь минимально необходимый состав экспортируемых функций:

Функция Назначение
EI_GetName Вернуть название модуля
EI_Initialization Инициализировать модуль
EI_NewGame Начать новую партию
EI_SetupBoard Установить новую позицию на игровой доске
EI_MakeMove Сделать очередной ход на игровой доске
EI_SetTimeControl Установить игровой контроль времени
EI_SetTime Установить оставшееся для игры время
EI_Think Вычислить лучший ход
EI_Analyse Анализировать текущую позицию
EI_Stop Закончить все вычисления
EI_Exit или EI_OnExit Завершить работу модуля

Ограничение силы

Для поддержки ограничения силы игры игровой модуль может экспортировать функцию EX_SetEasyLevel. Через вызов этой функции программа RU64 передает игровому модулю заданный игроком уровень силы игры.

Объявление функции для языка C (диалект GNU99):

#define ENGAPI __attribute__((stdcall,dllexport))
ENGAPI void EX_SetEasyLevel(int lvl);

Аргумент lvl этой функции - число в диапазоне от 0 до 9, где 0 означает отсутствие ограничения.

Использование эндшпильных баз

При необходимости использования сервиса оценки позиций по эндшпильным базам, игровой модуль может экспортировать функцию EX_EGDB. Через вызов этой функции программа RU64 передает модулю указатель на обработчик запросов.

Объявление функции для языка C (диалект GNU99):

#define ENGAPI __attribute__((stdcall,dllexport))
#define GUIAPI __attribute__((stdcall))
ENGAPI void EX_EGDB(GUIAPI int (*proc)(char *pos));

Аргумент pos, передаваемый при вызове обработчика по указателю proc, должен указывать на ACIIZ-строку, определяющую позицию таким же образом как и аргумент функции EI_SetupBoard. Возвращаемые обработчиком значения обозначают точный результат игры в переданной позиции для стороны, имеющей в ней очередь хода:

Так же программа RU64 параллельно поддерживает обращения к интерфейсу оценки позиций по эндшпильным базам, передаваемому через вызов функции EI_EGDB, если такая функция экспортируется из игрового модуля.

Для того чтобы дать представление об устройстве игровых модулей формата Kallisto, в установочный комплект программы RU64 включен архив с исходным кодом игрового модуля текущей версии.

Дополнительно

Архив с программой KallistoGUI и более подробной информацией о формате Kallisto доступен в разделе загрузок.