【干货】国外棋趣联盟象棋软件发展概况11.3中国棋趣联盟象棋游戏设计研究方法

2022-06-18

《中国棋趣联盟象棋游戏设计与实现.docx》为会员共享,可在线阅读。更多与《中国棋趣联盟象棋游戏设计与实现.docx(27页珍藏版)》相关的,请到快库搜索。

1、毕业设计中国棋趣联盟象棋游戏设计与实现总结中国棋趣联盟象棋发展了几千年,是中国人民族智慧的结晶。在我国象棋奇兵22,棋趣联盟象棋在中国的火爆程度是其他棋类游戏无法比拟的,从国际和全国比赛到小型社区街道。今天,仅中国就有2亿人去中国棋趣联盟象棋,中国棋趣联盟象棋的发展趋势越来越国际化。本文首先研究了中文棋趣联盟象棋在计算机中的表示,讨论了如何生成招式及一系列相关内容,然后在此基础上研究博弈树的搜索技术及相关开发。修剪算法。系统采用MFC文档视图架构和Visual C+开发工具,实现了具有一定棋力的中文棋趣联盟象棋人机游戏程序。该游戏程序实现了人机游戏、后悔棋、电脑难度设置、着法生成等功能。关键词:中国棋趣联盟象棋AI博弈树Alpha-B

2、eta search 25/27 Catalog 1 前言11.1中国棋趣联盟象棋游戏设计背景及研究意义11.2前言棋趣联盟 象棋软件开发概述11.3中国棋趣联盟象棋游戏设计研究方法11.4本文的主要工作22游戏生成2的表示和动作< @2.1 棋盘和棋子的表示 2<@2.2 步生成 43 步和游戏程序的实现 53.1 游戏程序的实现 53.1.1 搜索算法5 3.1.2招式排行83.1.3位置评价93.2忏悔与恢复功能实现113.3招式名称显示功能的实现12 3.4胜负的决定 144界面设计与系统实现 154.1界面设计 154.2系统实现 175总结21参考文献 23ABSTRACT24至25仲恺农业工程学院毕业论文(设计)分数评估m 261 前言1.1 中国棋趣联盟象棋游戏设计背景

3、和研究意义中国棋趣联盟象棋游戏已经流传了几千年。它是一种集文化、科学、艺术、竞争于一体的古老文化。 ,有利于开发人的智慧,锻炼人的思维,培养人的毅力,增强人的竞争意识。自计算机发明以来,各个领域的发展,以及成为我们日常工作和生活中不可缺少的一部分的过程,电子游戏逐渐渗透到我们每个人的娱乐活动中。在电脑普及的今天,能用电脑编辑程序开发自己的游戏已经不再是梦想。中国的棋趣联盟象棋历史悠久,不仅历史悠久,而且有广泛的基础,作为一项智力运动,已经成为我们游戏开发的首选对象。中国 棋趣联盟象棋 是一场智力游戏。过去,人们下棋。现在有了电脑,我们可以和电脑竞争,人们可以和电脑对战。控制仪表

4、计算机是人,人工智能是一门综合性很强的外围学科。它的中心任务是研究如何让计算机完成过去只能由人类智能完成的工作。因此,在游戏开发过程中对人工智能技术的研究自然成为了业界的热门研究方向。 1.2海外棋趣联盟象棋软件开发概述最早的棋趣联盟象棋软件是一对可以下棋的电子棋盘,后来升级为视频游戏主机。一些小容量的棋趣联盟象棋软件如:DOS界面会家族,WIN31程序中的棋趣联盟象棋等,没有那么多人能用电脑, 相反,等待计算机程序缓慢的搜索算法是不耐烦的,有时甚至怀疑软件是否在搜索中死机。后来真正的WINDOWS窗口界面棋趣联盟象棋专业高级软件象棋隐藏,棋趣联盟象棋族,棋趣联盟象棋职员,棋趣联盟象棋攻略等等总之,

【干货】国外棋趣联盟象棋软件发展概况11.3中国棋趣联盟象棋游戏设计研究方法

5、各类棋趣联盟象棋软件既有各自的优点,也有共同的缺陷。局面人性化的结构,残局中的智力明显低于人脑,难以摆脱残局的必然招式。展望未来,棋趣联盟象棋软件经历了持续上升的趋势,可能会出现逐渐降温的趋势。 1.3中国棋趣联盟象棋游戏设计研究方法本系统主要用Visual C+开发,其中的MFC类库使游戏开发更加方便,并使用了人工智能相关的搜索算法实现人工智能的着法生成,从而提升整个游戏的功能。 棋趣联盟象棋人机游戏系统实现的功能主要有:1、玩家选择(人机或计算机);2、人机游戏(人机比拼) );3、电脑象棋能力难度选择(电脑象棋能力难度选择,共4级:根据电脑配置选择难度); 4、忏悔,

6、恢复;5、移动名称(棋趣联盟象棋移动名称)。 1.4 本文主要工作的第一部分主要介绍了棋趣联盟象棋游戏在中国开发的背景和意义,国外棋趣联盟象棋的开发@>软件,棋趣联盟象棋@棋趣联盟象棋游戏设计与研究方法;第二部分介绍棋位表示方法和着法生成;第三部分介绍了棋步的实现和游戏程序;第四部分介绍界面设计和系统实现。 2 棋盘表示和移动生成<@2.1 棋盘和棋子的表示对于中国棋趣联盟象棋 棋盘位置的表示,可以使用传统而简单的“棋盘阵列”。即用一个9*10的数组来存储棋盘上的信息,数组的每个元素存储棋盘上是否有棋子。这种表示简单且易于实现。这种方式的棋盘初始情况如下: BYTE CChessBoard910 = R, 0, 0, P, 0, 0, p, 0, 0

【干货】国外棋趣联盟象棋软件发展概况11.3中国棋趣联盟象棋游戏设计研究方法

7、, r,H, 0, C, 0, 0, 0, 0, c, 0, h,E, 0, 0, P, 0, 0, p, 0, 0, e ,A, 0, 0, 0, 0, 0, 0, 0, 0, a,K, 0, 0, P, 0, 0, p, 0, 0, k,A, 0, 0, 0, 0 , 0, 0, 0, 0, a,E, 0, 0, P, 0, 0, p, 0, 0, e,H, 0, C, 0, 0, 0, 0, c, 0, h ,R, 0, 0, P, 0, 0, p, 0, 0, r;为所有部分定义一个值:#define R_BEGIN R_KING#define R_END R_PAWN#define B_B

8、EGIN B_KING#define B_END B_PAWN#define NOCHESS 0 / 无兵黑:#define B_KING 1 / 黑指挥官#define B_CAR2 / 黑车#define B_HORSE3 / 黑马#define B_CANON 4 / 黑大炮#定义 B_BISHOP 5 / Black Warrior #define B_ELEPHANT 6 / Black Elephant #define B_PAWN 7 / Black Pawn Red Party:#define R_KING 8 / Red General #define R_CAR 9 / Red Car #define R_HORSE 10 / Red Horse #define R_CANON 11 / Red大炮#define R_BISH

9、OP 12/Red Soldiers#define R_ELEPHANT 13/Red Phase #define R_PAWN 14/Red Soldiers Judge 颜色:#define IsBlack(x) (x=B_BEGIN & x=R_BEGIN & x=R_END)/判断一个棋子是否红,是走法的表示,直接借用棋盘数组的下标来记录走法的起点和目标点。至于哪个棋子在移动,是否被捕获,捕获了什么样的棋子,在移动结构中没有记录。该信息是通过外部读取棋盘上起点和终点的数据获得的。走法结构定义如下,其中还包括对后面要提到的“历史启发式”走法历史得分的记录。 typedef structshort nChessID; /表示什么棋子CHESSM

10、ANPOS From;/起始位置 CHESSMANPOS To;/去哪里 int Score;/运动得分 CHESSMOVE;程序只有在棋盘位置和走法都表示出来后才能完成以下动作: 生成所有合法走法;执行动作,撤消动作;评估一个位置。因此,游戏表示就像整个程序(计算机国际象棋引擎的一部分)的基础,所有后续操作都将建立在该基础上。 <@2.2 在移动生成器中生成移动。基本思路是遍历整个棋盘(逐一检查棋盘上的每个位置)。确定它是什么类型的棋子,然后根据它的棋子类型,找出它所有的合法移动象棋奇兵22,并将它们存储在移动队列中。这里讨论的“合法举动”包括以下内容:

【干货】国外棋趣联盟象棋软件发展概况11.3中国棋趣联盟象棋游戏设计研究方法

11、1、每个棋子都会按照自己的规则移动。比如马跳“日”字,象走“天”字,九宫斜走的兵等(这里要注意的是,兵(兵)的规则会根据他们过河后的位置。可以左右平移)。 2、线不能超出棋盘的边界。当然,所有的棋子都不能出棋盘。同时,某些棋子有自己的棋界。比如将军和士兵不能出九宫,大象不能过河。 3、途中不能有其他棋子挡住线(除了枪需要隔着棋子打棋子),这样线的目标点就不能有自己的棋子(的当然,你不能自己吃)。 4、武将不能见面(在本程序中,只有在生成电脑招式时才认为会见武将是非法的,而导致武将相遇的用户招式不被认为是非法的,只会导致失败。 )。生成移动后,必须将其存储在移动队列中以供搜索

12、为了达到目的,既然搜索会搜索多个层(即考虑你来我去的两个边走几步,方便评估情况避免“短-sighted" 尽可能),所以在移动队列中存储移动时,也存储移动所属的搜索层数。因此,移动队列可以定义为一个二维数组m_MoveList870,其中第一个数组下标是层数,第二个数组下标是每一层的所有移动。关于搜索层数,设置为4,实际使用1比3(界面3)中限制为1。搜索层数的增加会显着提升计算机的棋力级别(当然是电脑的棋力)也很大程度上取决于形势评估。)在配置1.5G的电脑上,512M内存最多只能搜索3层,再多会导致无法忍受的搜索时间(这里还有需要注意的是,搜索的速度也和招式生成的效果有关

13、 率与位置评估的复杂性有关,因为这两种操作都是针对分析的每个节点执行的)。对于每一层的走法数,即当前棋手对于当前位置的所有可选合法走法,据相关统计,在棋趣联盟象棋的实战中,是通常是五十或六十。将第二个数组的下标定义为 70 应该是非常安全的。 3 国际象棋和游戏程序的实现3.1 游戏程序的实现3.1.1 搜索算法搜索算法对整个国际象棋引擎至关重要。它就像程序的心脏,驱动着整个程序。搜索算法的好坏直接影响程序执行的效率(从某种角度来说,它影响着计算机的棋水平。因为,计算机必须在有限的时间内完成思考,而快速的搜索速度意味着程序可以“看”得更远,“想”得更多)。关于象棋游戏程序中的搜索算法,

14、有成熟的Alpha-Beta搜索算法和一些其他辅助增强算法(也有很多基于Alpha-Beta算法的衍生和变体算法)。我们直接借用了程序中的Alpha-Beta搜索算法,并补充了历史灵感。本节首先介绍Alpha-Beta搜索算法:在中国棋趣联盟象棋,两个玩家获得相同的棋盘信息。他们轮流下棋,目的是为了俘获对手的将军或帅,或躲避自己的将军或帅。意思是红方走棋,黑方走棋。图1 博弈树和这个,可以用“博弈树”(图1)来表示下棋的过程。树中的每个节点代表棋盘上的一种情况,对于每个位置(节点),不同根据不同的着法生成位置(生成新节点),以此类推,直到没有更多的着法可供选择,即到达叶子节点(游戏结束)。中国的博弈树模型棋趣联盟象棋大致如下图所示【干货】国外棋趣联盟象棋软件发展概况11.3中国棋趣联盟象棋游戏设计研究方法,连接节点的线段可以看做走棋,不同走棋自然会产生不同的情况,树中包含三种类型的节点:1、奇数层中间节点(有根节点),表示轮到红队移动;2、偶数层中间节点表示轮到红队移动黑队 Move;3、叶节点,表示游戏结束。现在让电脑玩中国棋趣联盟象棋,应该选择走法这对它最有利(最终导致它获胜的那个)。获得最佳走法的方法是“尝试”每一个可能的走法,比较它们的不同后果,然后选择对你产生最有利局面的走法。结合上面提到的博弈树中,如果给每个节点打分来评估其对应的情况(这个

-棋趣联盟