背景
体验到小视频带来的流量福利后,国内广告软件与日俱增,本人热爱象棋,在使用软件时深感体验不佳,于是打算自己做一款来辅助自己日常练习,以保证野路子养成日记的续写。
考虑到自身不是算法班出身,也没有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进行处理,非常感谢!