Я хочу соединить мою программу C ++ с шахматным движком, чтобы иметь ИИ для врага.
В моей программе на С ++ -> Пользователь сделает ход (например, A2A3) -> Я передам эту строку шахматному движку -> Движок обновит доску -> Движок запустит ИИ для расчета хода врага -> Движок передаст движение врага в виде строки (например, A7A6) моей программе на C ++ -> и т. д.
Я прочитал, что для того, чтобы моя программа взаимодействовала с шахматным движком, мне нужно запустить файл chess_engine.exe и обмениваться с ним командами через стандартный ввод / вывод.
Можете ли вы сказать мне, как именно мой программный код Visual Studio может запускать exe-файл и обмениваться с ним командами ?? Любой пример?
Заранее спасибо.
Для этого вам нужно запустить новый поток или процесс с движком. Как правило, вы делаете это, запуская новый процесс, где основной функцией двигателя будет отправная точка нового процесса.
Теперь в вашем приложении будет два процесса. Ваше GUI-приложение является родительским процессом, тогда как сам движок будет дочерним процессом. Вам нужно будет связаться с движком по стандартному шахматному протоколу UCI. Вы можете передавать входные и выходные данные в / из дочернего процесса (который является движком).
Допустим, вы хотите начать новую игру. Вы выполните следующие команды UCI:
isready
ucinewgame
Пожалуйста, внимательно прочитайте спецификацию UCI. Вы можете получить его в Google.