《棋童》(ChessBoy)是一款致力于实现象棋软件之间无缝对接的辅助工具软件
《棋童》的基本工作原理
《棋童》运行时,通过抓取正在运行的象棋软件的用户界面(有象棋棋盘和棋子的画面),利用图像识别技术获取当前的棋局局面和着法,从而实现不同象棋软件之间的交互。
《棋童》的使用方法
步骤1:学习。
《棋童》安装后,首次运行时,必须先学习。点击菜单 [文件]->[学习...] 即可进入学习状态。学习的主要任务是识别当前状态下目标窗口内棋盘的尺寸以及记录各个棋子的模样。这里说的“当前状态”,是指当前的屏幕显示设置的分辨率,目标窗口内棋盘、棋子模样(因为有些软件有很多种棋盘、棋子方案)等。学习时,请确保目标窗口内的棋局为象棋棋盘的初始开局,红方棋子在棋盘下方,黑方棋子在棋盘上方。以后目标窗口运行时,只要其界面状态和当前学习时的一致,《棋童》就能正确识别其内部的局面和着法。为本次学习取一个好记的名字,填在“方案名称”中,《棋童》学会后会弹出对话框提示成功或失败。
步骤2:选择运行模式。
《棋童》cat.0.1支持“记谱模式”和“对战模式”。“记谱模式”可用来可用来实现对战直播功,也能验证《棋童》的学习效果。“对战模式”可用来实现2个象棋软件窗口之间的对战。
记谱模式:
使用“>>”按钮来选择您需要《棋童》操作的窗口,如果该窗口未在界面左边的列表框中列举出来,请点击“刷新”按钮重新获取窗口列表。选择了窗口后,界面会显示出选择窗口上的标题,从该标题下方的下拉框中选择一个之前学习的方案名称。
对战模式:
和记谱模式一样,选择对战双方的窗口和使用的学习方案,另外再选择该窗口在“对战”过程中所代表的棋手方(红方或黑方),这样在对战过程中,《棋童》就会把该棋手方的着法“输出”至另一窗口中。
步骤3:开始工作!
选完运行模式和窗口以及窗口方案、棋手方之后,《棋童》就可以开始工作了,点击“开始”按钮即可。直到一方窗口被正常/异常关闭,或是您点击了“停止”按钮。
步骤4:保存棋谱。
记谱或者队战结束后,“保存棋谱”按钮将会变为可用按钮,点击后即可将识别出的棋谱导出为棋谱文件。目前支持的棋谱格式有后缀为.xqf 格式的文件,使用《象棋演播室》软件即可打开、编辑棋谱。
步骤5:退出。
点击窗口关闭按钮或者“退出”按钮即可退出《棋童》。
注意事项:也是最重要的!
1.关于识别。
由于目前使用的棋子识别算法还比较简单,有些象棋软件的界面设计里,棋子被选中后会有些变形,这在目前的算法里是无法识别的,也希望对相关识别算法有更好的建议的朋友不吝赐教,在下先谢过了!
我测试能正确识别的象棋软件有:联众中国象棋、楚汉棋缘、象棋演播室、QQ中国象棋。(版本未尽列出,请谅解!)其他很多软件都暂时没时间测试,感兴趣的朋友可以尝试,验证识别正确与否的标准就是对其进行一次“直播记谱”,如果棋谱和原棋局能对应,则说明识别成功。
另外,对“拖动”走棋的界面方案目前也不能支持,因为抓图过程可能会认为走了很多步棋,这个问题可能会在以后的版本中解决。
2.关于控制。
“记谱模式”中对“直播窗口”的棋子控制和“对战模式”对双方棋子的交互控制,都是先点击走棋的起始位置,再点击该着法的目标位置(这两个“点击”行为都是模拟的),因此,如果目标软件将行棋方式指定为“拖动”方式:“鼠标左键按下 -> 拖动鼠标 -> 在目标位置松开鼠标左键”,本软件目前版本仍无法完成。另外,由于有些软件,特别是网络游戏软件为了屏蔽游戏外挂,可能对这种方式做了限制,因此也不保证每次控制都能正确进行。真正的控制模拟也将在以后的版本中实现。这一版本运行时,必须保证两个窗口起始局面一样,包括上下红黑方的位置也要一样。
后期计划:
1. 支持UCCI协议的中国象棋智能引擎。
2. 加强对鼠标控制的模拟,以便适应更多的情况。
3. 加强图像识别效果,以适应更多的场合。
4. 其他。
最后,大家如果对《棋童》有什么意见或建议,包括发现的Bug和对新功能的期待,请通过邮件:cnchessboy@gmail.com与我联系。感谢大家对《棋童》软件的关注,谢谢!