zoukankan      html  css  js  c++  java
  • 国际象棋人工智能软件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,软件会自动为白方走棋,结果为:

     

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

  • 相关阅读:
    SpringMVC中请求路径参数使用正则表达式
    SpringBoot单元测试示例2
    数据结构与算法之——八大排序算法
    linux学习之centos(二):虚拟网络三种连接方式和SecureCRT的使用
    linux学习之centos(一):在VMware虚拟机中安装centos6.5
    网易云课堂学习之VS相关
    emplace_back减少内存拷贝和移动
    Lepus经历收获杂谈(一)——confirm features的小工具
    MDM平台学习笔记
    四大开源协议:BSD、Apache、GPL、LGPL
  • 原文地址:https://www.cnblogs.com/ryueifu-VBA/p/15431686.html
Copyright © 2011-2022 走看看