象棋引擎简单引用

背景

体验到小视频带来的流量福利后,国内广告软件与日俱增,本人热爱象棋,在使用软件时深感体验不佳,于是打算自己做一款来辅助自己日常练习,以保证野路子养成日记的续写。

考虑到自身不是算法班出身,也没有250+的智商,所以先采用套壳的思想,站巨人肩膀上砥砺前行。

解决方案

软件官 [象棋巫师 – 象棋百科全书]

大家可以按提示一步一步下载安装好。

安装好以后可以看到内部文件夹如下图所示

这边我仅演示最核心的一个小部分,其余的作用大家可以参考UCCI官 说明。

文件夹中的文件我们只需要两个,分别是【开局库文件BOOK.DAT】和【象棋引擎ELEEYE.EXE】

编程阶段

1. 使用vs2019创建C#窗体应用项目,随后添加【1.标签,命名为label_Fen】【2.文本框,命名为textBox_Fen】 【3.标签,命名为label_ThinkTime】 【4.文本框,命名为textBox_ThinkTime】

【5.按钮,命名为button_Search】【6.富文本框,命名为richTextBox_Result】

布局如下

2.  此时点击vs2019上的生成解决方案,先把此项目的Debug文件夹和Release文件夹生成

3.  这里演示在Debug文件夹下的操作,我们把象棋巫师软件中上文提到的那两个重要文件复制到项目的Debug文件夹下

4. 复制一下方法到窗体内部,该方法含义为,接收一个局面代码参数,一个限时参数,返回一个引擎认为最佳的棋步,棋步的读写格式为:左到右[a-j] 下到上[0,9]

 

5. 回到我们的窗体设计界面,双击按钮button_Search,给它添加点击事件,获取Fen文本框内容,ThinkTime文本框内容,然后把这两个参数传给我们上面建立的方法,并等待结果返回。我们将结果解析后,即可在富文本框上显示内容。

以下是一个例子

【1】初始局面的时候,我们从局面中获取巫师自带的转Fen功能

 

【2】 把Fen代码复制到我们程序的Fen文本框中,设置思考时间为10秒,点击搜索按钮

【3】可以看到程序调用了我们获取最佳棋步方案,返回了它推荐的最佳棋步,按我们上面说的解析格式,h为倒数第二列,2为倒数第三行,e为中路,也就是说,此次调用,引擎的推荐结果为【炮二平五】

【4】出于大家对引擎的不同需要,可以自行探索其他妙用,这里提个醒,可以在Fen代码中加上以往的棋步,这样可以判断接下来的着法是否符合引擎定义的棋规。代码格式为 【局面代码 行动方 moves 上面格式的棋步列表,空格分隔】,例如【rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w moves d0e1 b7d7 h0g2 b9c7 g3g4】

就是云库中进行如下行动后的局势代码

 6. 对基本方法的进一步封装就可以形成大家所需要的代码啦,加油

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月6日
下一篇 2022年4月6日

相关推荐