国际象棋人工智能软件chessdb

国际象棋人工智能软件chessdb  

第1章 软件概述

国际象棋人工智能软件(以下简称chessdb),是用VB.NET语言开发的一款Windows桌面应用程序。基本功能包括:

l  编辑棋局

l  保存棋谱

l  打开棋谱

l  人工智能分析局面

其他选项有:

l  旋转棋盘

l  翻转棋子

l  设置格子颜色

该软件的特点是兼容性好,无需安装,双击文件即可打开。而且,棋力水平高,适合各个水平的棋手作为辅助工具使用。

1.1 开发背景

国际象棋(Chess)是欧美国家比较流行的一种智力游戏,近年来在国内也已经非常普及,而且经常举办各种规模的赛事。越来越多的家长愿意让自己的孩子学习国际象棋,提高智力水平。

但是,适合国人推演棋局的人工智能软件却不多,本软件的设计是为了让更多人了解国际象棋,借助本软件的分析功能进一步提高棋手的竞技水平。

1.2 设计思路

棋类游戏的软件开发,首选窗体应用程序,利用图像控件呈现棋子效果。因此,本软件的实现必须考虑如下多个方面:

l  国际象棋棋盘的正常显示

l  棋子的正常显示

l  棋子按照行棋规则正常移动

l  行棋过程中记录前后移动的坐标

l  棋谱的保存

l  棋谱的打开

l  在任意一个局面下分析局面

除了实现以上基本功能外,还需要从方便用户使用的角度,设计如下选项:

l  设置深格、浅格颜色

l  棋盘旋转

l  棋子翻转

这些设置应该保存于注册表,下次启动软件时直接使用上次的设置。

棋盘的实现,采用了64个PictureBox控件,每个控件具有BackColor属性和Image属性,其中BackColor通常为纯色,用于显示格子颜色。而Image属性是一个图像,在行棋的过程中利用不断修改Image属性实现走棋的效果。也就是说,行棋过程中,所有的控件位于原地不动,只是更改了相应控件的图像。

在手动走棋过程中,还需要对行棋行为按照国际象棋行棋规则进行约束,否则,拿起任何一个棋子都可以移动或吃掉另一个棋子。具体的行棋规则请参考其他资料。但是国际象棋有以下4个特殊的走棋方式,需要个别处理。

1.2.1 王车易位

当一方的王和车从未走动,而且王车之间没有任何棋子,此时王可以向车的方向一次移动两格,车越过王靠在王的另一侧。这个动作算一步棋。

 

 

 王向a列的车易位,称为“长易位”,把王走到c1,并且把左侧的车走到d1。

王向h列的车易位,称为“短易位”,把王走到g1,并且把右侧的车走到f1。

需要另外注意的是:易位时必须考虑王经过的每个格子是否被对方将军,如果某个格子处于将军,则不具有易位条件。假设计划长易位,必须提前看一下e1、d1、c1这三个格子,是否被对方棋子将军。

长易位的结果:

 

 

 

短易位的结果:

 

 

 

1.2.2 兵走两格

在初始局面,白黑双方各有8个兵,分别位于2线和7线。

 

 

 

 在没有被对方将军的前提下,原位的兵可以直接向前移动两格,如果不是原位的兵,一次只能前进一格。

兵走两格的条件是,兵前面的两个格子都没有任何棋子。

上图的行棋结果是:

 

 

 

 再看下图,白方e2兵前面有象,黑方a7兵前面有马,这两个兵都不具有走两格的条件。

 

 

 

 

1.2.3 吃过路兵

吃过路兵的走法必须基于对方兵走两格。

假设白方e线的兵已经走到5线(对方境内),那么相邻的d线和f线,对方的原位兵如果走两格,白方就可以吃掉黑方的兵。

 

 

 

 

假设黑方走d7d5,那么白方可以认为黑方的兵在d6,直接走e5d6,并且把d5的兵从棋盘拿掉。

 

 

 

 行棋的结果:

 

 

 

 反之,当黑方的兵已经走到4线(白方境内),白方相邻线的原位兵前进两格,也有被吃过路兵的可能。

 

 

 

 上图,当白方走b2b4,黑方可以走a4b3吃掉白兵。

此外,需要注意的是吃过路兵不是必须的,主吃方根据棋局形势可以选择吃,也可以任之不管。如果选择吃,必须立即吃掉,如果双方各走了其他的棋子,则吃过路兵的条件已丧失

1.2.4 底兵升变

当一方的兵走到了对方棋盘的底线,这个兵必须变更为己方的后、车、马、象之一。

白方的兵走到了8线,或者黑方的兵走到了1线,都必须升变。

 

 

 

 上图,如果轮白方走,b7兵既可以吃掉黑方马并且升变,也可以直接走到b8升变。

如果轮黑方走,c2兵走到c1升变。

假设白兵吃掉了黑马,软件弹出一个升变对话框,白方必须从中选择一个,通常选择后。

 

 

 

 升变后的结果:

 

 

 

 

 

1.3 软件的基本信息

软件名称:chessdb

文件类型:exe可执行程序

其他辅助文件:无

运行平台:Windows系统均可正常运行

 

 

第2章 软件下载

联网用户可以访问:https://share.weiyun.com/R3QI4yfl

进入“工具大全”文件夹,下载chessdb.zip

也可以直接从如下链接下载:

https://files.cnblogs.com/files/ryueifu-VBA/chessdb.zip

下载后解压缩到任意路径,主文件是chessdb.exe,另一个a.txt是一个示例棋谱文件。

 

 

第3章 功能说明

 

3.1 软件概览

本软件的功能分布在窗体区域和主菜单中。

窗体区域包括:

l  棋盘和棋子

l  FEN文本框

l  棋谱列表

l  招法列表

 

 

 

 

 菜单包括:

l  文件:棋谱的保存和打开

l  选项:棋盘和棋子的外观设定

l  人工智能:设置是否显示招法

l  帮助

 

3.2 编辑棋局

刚打开软件时,默认显示的是国际象棋初始局面。

由白方先行,用户使用鼠标点击白方的棋子,按照国际象棋行棋规则走棋即可。

如果不启用人工智能,白方、黑方均由软件的用户使用鼠标走棋。

棋谱可以保存为TXT文件,以后通过“文件”、“打开”再次查看棋谱

3.3 查看棋谱

一个棋谱由初始局面和棋招列表构成,棋招列表位于棋盘右侧,用户使用鼠标点击列表中的某项,或者按键盘的上下箭头,可以快速跳转到该局面。

 

 

 

 同时,棋盘底部有一个FEN文本框,里面实时显示当前局面信息。

3.4 编辑残局

本软件未提供直接从棋盘编辑残局的方法。

用户可以直接修改FEN文本框的内容,按下回车键完成残局编辑。如果想编辑残局,用户需要事先了解FEN字符串的构成和含义。

FEN字符串把某个局面的棋子,使用字母代替,最后连成一个长的字符串,方便在不同的软件之间传递局面信息。

例如初始局面如下:

 

 

 

 白方棋子对应的字母为:

车(R)、马(N)、象(B)、后(Q)、王(K)、兵(P)

黑方棋子是上述各个字母对应的小写。

如果把初始局面用字母代替,则结果为:

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR

其中/用于分行,数字表示连续的空白格子数。

编辑残局举例如下:

假设FEN文本框中的内容为:

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

用鼠标选中前面的rnbq,这4个字母,删掉,改写为数字4,表示4个空白格子。然后再把第二行的前面3个p,删掉,换成数字3。最后按下回车。

FEN文本框内容被修改为:

4kbnr/3ppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

棋盘局面为:

 

 

 

如果要设置残局该黑方行棋,将后面的w改为b即可。

 

3.5 更改格子颜色

用户根据自己的爱好,可以修改深格和浅格的颜色。

点击菜单“选项”、“深格颜色”,弹出一个颜色选取对话框。

 

 

 

 

点击“确定”后,棋盘颜色发生了变化

 

 

 

  

3.6 旋转棋盘

如果用户需要查看黑方,把白方当作对方,可以通过旋转棋盘来切换视图。

 

 

 

  

3.7 翻转棋子

国际象棋平面棋子,一般默认是白黑双方的棋子都是正向的,沿着屏幕方向朝上。

有时候需要把对方的棋子方向调转,更好地分辨走棋方向。

 

 

  

3.8 人工智能

软件默认是关闭人工智能功能的。如果要为白方支招,选择菜单“人工智能”、“显示白方招法”,使其处于勾选状态(也可按下快捷键Ctrl+W)。

 

 

 这样,每当黑方走完一步棋,软件最右侧就自动显示白方的各种招法,用户一般选择最上面的招法即可。

例如使用鼠标点击右侧列表中的e2e4,软件会自动为白方走棋,结果为:

 

 

 

如果出现卡顿,耐心等待即可。

posted @ 2021-10-21 08:09  ryueifu  阅读(2284)  评论(0编辑  收藏  举报