C++ xboard chess gui不支持';不发送第二次用户移动
我正在尝试为xboard制作一个象棋引擎。在用户做出第一步后,我的象棋引擎会回复,然后xboard不会发送用户做出的下一步 我记录了xboard发送到我引擎的任何内容。下面是一个代码示例,其中我的引擎使用C++ xboard chess gui不支持';不发送第二次用户移动,c++,unix,protocols,chess,C++,Unix,Protocols,Chess,我正在尝试为xboard制作一个象棋引擎。在用户做出第一步后,我的象棋引擎会回复,然后xboard不会发送用户做出的下一步 我记录了xboard发送到我引擎的任何内容。下面是一个代码示例,其中我的引擎使用move e7e6回复e2e4: #include <iostream> #include <fstream> #include <unistd.h> std::ofstream f("xboardtoeng.txt"); std::ofstream f2(
move e7e6
回复e2e4
:
#include <iostream>
#include <fstream>
#include <unistd.h>
std::ofstream f("xboardtoeng.txt");
std::ofstream f2("engtoxboard.txt");
int main(int argc, char** argv){
while (true){
std::string s;
std::cin>>s;
f<<s<<std::endl;
if (s=="protover"){
std::cout<<"feature done=1"<<std::endl;
f2<<"feature done=1"<<std::endl;
}else if (s=="e2e4"){
usleep(100000);
std::cout<<"move e7e6"<<std::endl;
f2<<"move e7e6"<<std::endl;
}
}
f.close();
}
在这里,xboard确实向我的引擎发送了第一步。但是,不会发送下一个用户移动。知道我哪里做错了吗
我使用xboard版本4.8.0,我有同样的问题,因为xboard发送SIGINT和SIGTERM信号。添加代码
信号(SIGINT,SIG\u IGN)
解决我的问题
我也有同样的问题,因为Xboard发送SIGINT和SIGTERM信号。添加代码
信号(SIGINT,SIG\u IGN)
解决我的问题
xboard假设另一侧是计算机引擎。它在等待你的引擎移动。你的引擎回复了吗?事情是这样的:xboard向我的引擎发送“e2e4”后,我的引擎回复“移动e7e6”。xboard收到了我引擎的回复,并将其显示在黑板上。之后,我尝试(作为用户)在gui上进行另一个移动,但该移动从未传输到我的引擎。在这种状态下,引擎不应该是期望从xboard收到消息的引擎吗?xboard假定另一端是计算机引擎。它在等待你的引擎移动。你的引擎回复了吗?事情是这样的:xboard向我的引擎发送“e2e4”后,我的引擎回复“移动e7e6”。xboard收到了我引擎的回复,并将其显示在黑板上。之后,我尝试(作为用户)在gui上进行另一个移动,但该移动从未传输到我的引擎。在这种状态下,引擎不应该是期望从xboard收到消息的引擎吗?
xboard
protover 2
accepted usermove
accepted myname
accepted done
new
random
level 40 5 0
post
hard
time 30000
otim 30000
usermove e2e4