中国象棋源代码及文档

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

I摘要象棋程序可以分为两大部分:人工智能和界面程序辅助。人工智能的主要部分,反映了计算机下象棋的想法,电脑怎么想,最好的方法去完成下一步,优先搜索算法进行搜索,和各种可能的行动,评估,选择胜利面最大的一步;界面和程序协助部分主要是界面友好,以更好地适应用户下象棋的想法。本文研究了中国象棋在电脑中如何表示,然后讨论如何产生走法的一系列相关技术。使用MFC架构和VisualC++开发工具,实现一定技能的中国象棋人机对弈功能。关键词:中国象棋;人工智能;下棋IITitleTheDesignAndRealizeofhuman-computerChessGameAbstractChessprogramcanbedividedintotwomajorauxiliaryartificialintelligenceandinterfaceprogram.TheAIpartofthemainreflectedcomputerchessideas,computerhowtothinkandgotothebestmethodtocompletethenextstep,firstsearchalgorithmtosearch,andavarietyofpossiblemoves,valuations,choosevictorysurfacestep;theinterfaceandtheprogramassistedsomeofthemajoruser-friendlygameofchessbythepreviousstep,tobetteradjustthechessideas.ThispaperstudiestheChinesechesscomputer,andthendiscusshowtogenerateaseriesofrelatedmoves.MFCarchitectureandVisualCdevelopmenttools,toachieveacertainchessskills,Chinesechess,human-computerchessprogram.Keywords:Chess;artificialintelligence;chess目次1引言……………………………………………………………………………11.1象棋设计背景和研究意义……………………………………………………11.2象棋设计研究方法……………………………………………………………12需求分析…………………………………………………………………32.1界面要求………………………………………………………………………32.2规则要求……………………………………………………………………32.3判定输赢……………………………………………………………………43系统设计与实现…………………………………………………………………63.1系统模块划分…………………………………………………………………63.2系统主要流程图………………………………………………………………63.3相关数据定义………………………………………………………………84系统测试运行…………………………………………………………………104.1测试方案设计……………………………………………………………………104.2测试过程及结果………………………………………………………………104.3系统的优缺点分析及改进方案………………………………………………114.4系统性能分析…………………………………………………………………11结论………………………………………………………………………………12致谢………………………………………………………………………………13参考文献……………………………………………………………………………1411引言1.1象棋设计背景和研究意义经过二十年的发展,电脑游戏行业已成为最重要的工作之一,以跟上全球电影,电视,音乐和其他娱乐行业,其年销售额超过好莱坞的全年收入的步伐。游戏作为一种休闲活动。由于早期人类社会的生产力和技术的限制,只有一些户外游戏。随着生产力的发展和技术进步,一种新的方式来播放-视频游戏也将诞生。当计算机的发明,电子游戏和另外一个新的载体。在计算机行业作为一个整体的推动下,通过不断创新,开发电子游戏。由于计算机的发明到发展到各个领域,成为每天的工作和生活这一进程的重要组成部分,电子游戏已逐渐渗透我们每个人的休闲活动。电脑已经流行,人们可以使用的计算机程序编辑,开发自己的游戏,不再是一个梦想。事实上,从游戏软件销售的占个人电脑软件市场份额约80%。棋类游戏是休闲游戏,以及阶段的角色扮演游戏和实时战略游戏和其他游戏比上手快,比赛时间很短,但也有利于用户的放松,喜欢的人,尤其是棋类游戏,方便,快,操作简单,在休闲和娱乐活动中占主导地位。中国象棋作为中华民族的古老文化的代表之一,不仅有悠久的历史和广泛的基础,作为一个智力活动,中国象棋开始走向世界。随着计算机处理速度的迅速增加,提出一个长期的问题:计算机是否会超越人类?计算机击败世界国际象棋大师,计算机比人强吗?人工智能是一个高度跨学科的,其中心任务是研究如何使电脑做过去依靠人类的智慧可以做的工作。因此,在游戏开发过程中的人工智能技术的研究自然成为行业的一个热门的研究方向。1.2象棋设计研究方法本程序的核心设计包括象棋的表示,人工智能算法的实现,以及在整个游戏的界面和程序内的MFC类库开发的辅助部分,使用VisualC++开发工具,使游戏开发更方便,使用人工智能相关搜索算法,用人工智能的方法来产生计算机走法,从而提高整个游戏的功能。本文的目标是要实现具有一定的象棋水平和互动与友好的中国象棋人机对弈象棋程序。整个程序可分为两个主要部分:2人工智能算法设计一、如何让电脑下中国象棋游戏,其中涉及的基本理论和人机下棋的想法是该方案的核心部分,但也是这个项目的重点研究的一部分。二,界面和程序计算机辅助设计光象棋引擎不能满足人机交互的基本要求,因此需要一个框架(接口)为载体。下面分别介绍每个部分的实现。由于界面和程序的辅助部分涉及的内容广泛和复杂,本文只介绍了关键的部分。32需求分析2.1界面要求如图棋子走的地方,被称为“棋盘”。矩形平面画,共有90个点,9个平行的垂直线和平行的水平线10相交点,在交叉点上的碎片。中间部分的第五,第六两条水平线板画垂直线之间的空白地带称为“河界”。水平之间的第四至第六部分的两端,中间的两端构成的斜交叉线的“米”字框,称为“九宫”(它恰好有九个交叉点)。棋盘被河界分为两等份。为方便游戏记录和学习中国象棋,现行的规则:根据与中国数字由右至左的9个垂直线-个代表红方各垂直线,用阿拉伯数字'1'到'9“代表黑色每个竖条。中国象棋的开始之前,红色,黑色和双方应该是一个棋子放置在指定的位置。任何棋子每走一步,进就写“进”退就写“退”之类的车,侧身上写“平”。2.2规则要求1.下棋4在游戏中,由红棋先走,双方轮流走,直到一个赢家,每个人下棋,棋子从一个交叉点到另一个空的交叉点,或吃对方的棋子占领叉点,被认为是走了一着。每一方都走过之后,被称为一个回合。2.所有的棋子移动如下:帅()每个被允许走一步前进,后退,水平可以,但不能出了“九宫”。帅和将不会被允许在同一条直线上直接对面,如果一方已经占用的,必须避免。士每次只允许沿“九宫斜线一步,可以撤退。象不能过河的边界,可进可退俗称相走田字。当另一个在卍中心,俗称赛象眼,马走日,可以撤退到,当地另一个棋子挡住,俗称为”蹩马腿不能走过去,车可直进直退,横走,而不限步数。跑在不吃子的时候,走法同车一样;兵(卒)在没有过河界前,每着只许向前直走一步;过河后,也可以交叉步,但能不能转回来。3.吃子走一招,如果自己的棋子的位置,有其他棋子存在,你可以把他吃掉而占领那个位置。只有跑必须从一块分开(无论哪一方)跳吃,俗称“炮翻山”之称。除了帅,其他字都可以让对方吃,或主动被吃。4.将军、应将、将死一方攻击对方的帅(将),下一步将要吃掉它,被称为“将军”。“将军”必须立即“应将”,使用自卫,以解决“将”的状态。如果在“将军”不能”应将,即使是”死“。2.3判定输赢1.结果游戏时,有下列情形之一,即使输棋,对方的胜利:(一)帅被对方“将死”(二)帅(将)被“将军”,彼此无法避免(帅)直接对面;(三)“被困死”;(四)不规定的时限内,未走完应走的数量;(五)超过比赛规定的时限(一般为15分钟);(六)封棋着法有误;(七)走棋举动违反了禁令,应当变着而不变;5(八)在相同的游戏棋中,单方面的第三个“违例”;(九)自称认输;(10)违反纪律。和棋,有下列情形之一的,即使是平局:(一)从理论上确认当事人没有双赢的局面可能;(二)建议和棋,并应使双方机会均等。世卫组织第一次抽签被拒绝(口头不同意,或走出去圆一招,被拒绝),由对方(也否认),不得再次提出,但下列(三)未提及(D)同属提到的特殊规定,不受此限。如果双方提及,等权数,可以由任何一方再次提及。提到和党明确指出,在另一方面,它不能撤回其报价。只要是一方提和,另一方当事人已声明,双方同意不准回去。此外,只提前按时钟的另一侧。(三)双方下棋循环反复达三次,在象棋的有关规定,可由任何一方提议作和,经审查局面属实,即使另一方不同意,裁判员也有权判为和棋。如果双方都没有提及,并循环反复的情况仍在继续,裁判不同意,决定判处各方的权利和行走方法有重复的情况与周期无关,你不能按照本条处理。(四)符合60轮规则“(也称为自然限)。63系统设计与实现3.1系统模块划分本系统主要功能模块如图:象棋游戏主框架模块棋盘管理模块计算机下棋模块3.2系统主要流程图7开始初始化棋子图标初始化棋子位置得到绘图设备句柄绘制棋盘结束系统初始化流程图8开始枚举所有的走法循环查询最优的走法是否可以吃掉对方将/帅返回吃掉将/帅的走法返回走法结束是否计算机查找走法流程图3.3相关数据定义constintMAN=0;//人constintCOM=1;//计算机constintRED=0;//红方constintBLACK=1;//黑方constintRED_K=0;//红帅9constintRED_S=1;//仕constintRED_X=2;//相constintRED_M=3;//马constintRED_J=4;//车constintRED_P=5;//炮constintRED_B=6;//兵constintBLACK_K=7;//黑将constintBLACK_S=8;//士constintBLACK_X=9;//象constintBLACK_M=10;//马constintBLACK_J=11;//车constintBLACK_P=12;//炮constintBLACK_B=13;//卒//把棋子序号转换为对应图标的序号constintManToIcon[33]={0,1,1,2,2,3,3,4,4,5,5,6,6,6,6,6,7,8,8,9,9,10,10,11,11,12,12,13,13,13,13,13,-1};//棋子类型与图标的序号相同#defineManToTypeManToIconconstintManToType7[33]={0,1,1,2,2,3,3,4,4,5,5,6,6,6,6,6,0,1,1,2,2,3,3,4,4,5,5,6,6,6,6,6,-1};//给出棋子序号!!,判断是红是黑constintSideOfMan[33]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1};104系统测试运行4.1测试方案设计编码过程完成后,最重要的是对系统的测试工作,系统测试阶段,有两个时期,通常在第一段做单元测试,另一段做全面系统测试。在模块测试中,我们考虑以下几个方面:模块接口;局部数据结构;重要程序算法;错误处理通道;影响上述边界条件。代码审查,从数据类型,变量声明,数据的结构进行审

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功