中国象棋源代码及文档Word格式文档下载.docx
《中国象棋源代码及文档Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《中国象棋源代码及文档Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
1.1象棋设计背景和研究意义……………………………………………………1
1.2象棋设计研究方法……………………………………………………………1
2需求分析…………………………………………………………………3
2.1界面要求………………………………………………………………………3
2.2规则要求……………………………………………………………………3
2.3判定输赢……………………………………………………………………4
3系统设计与实现…………………………………………………………………6
3.1系统模块划分…………………………………………………………………6
3.2系统主要流程图………………………………………………………………6
3.3相关数据定义………………………………………………………………8
4系统测试运行…………………………………………………………………10
4.1测试方案设计……………………………………………………………………10
4.2测试过程及结果………………………………………………………………10
4.3系统的优缺点分析及改进方案………………………………………………11
4.4系统性能分析…………………………………………………………………11
结论………………………………………………………………………………12
致谢………………………………………………………………………………13
参考文献……………………………………………………………………………14
1引言
1.1象棋设计背景和研究意义
经过二十年的发展,电脑游戏行业已成为最重要的工作之一,以跟上全球电影,电视,音乐和其他娱乐行业,其年销售额超过好莱坞的全年收入的步伐。
游戏作为一种休闲活动。
由于早期人类社会的生产力和技术的限制,只有一些户外游戏。
随着生产力的发展和技术进步,一种新的方式来播放-视频游戏也将诞生。
当计算机的发明,电子游戏和另外一个新的载体。
在计算机行业作为一个整体的推动下,通过不断创新,开发电子游戏。
由于计算机的发明到发展到各个领域,成为每天的工作和生活这一进程的重要组成部分,电子游戏已逐渐渗透我们每个人的休闲活动。
电脑已经流行,人们可以使用的计算机程序编辑,开发自己的游戏,不再是一个梦想。
事实上,从游戏软件销售的占个人电脑软件市场份额约80%。
棋类游戏是休闲游戏,以及阶段的角色扮演游戏和实时战略游戏和其他游戏比上手快,比赛时间很短,但也有利于用户的放松,喜欢的人,尤其是棋类游戏,方便,快,操作简单,在休闲和娱乐活动中占主导地位。
中国象棋作为中华民族的古老文化的代表之一,不仅有悠久的历史和广泛的基础,作为一个智力活动,中国象棋开始走向世界。
随着计算机处理速度的迅速增加,提出一个长期的问题:
计算机是否会超越人类?
计算机击败世界国际象棋大师,计算机比人强吗?
人工智能是一个高度跨学科的,其中心任务是研究如何使电脑做过去依靠人类的智慧可以做的工作。
因此,在游戏开发过程中的人工智能技术的研究自然成为行业的一个热门的研究方向。
1.2象棋设计研究方法
本程序的核心设计包括象棋的表示,人工智能算法的实现,以及在整个游戏的界面和程序内的MFC类库开发的辅助部分,使用VisualC++开发工具,使游戏开发更方便,使用人工智能相关搜索算法,用人工智能的方法来产生计算机走法,从而提高整个游戏的功能。
本文的目标是要实现具有一定的象棋水平和互动与友好的中国象棋人机对弈象棋程序。
整个程序可分为两个主要部分:
人工智能算法设计
一、如何让电脑下中国象棋游戏,其中涉及的基本理论和人机下棋的想法是该方案的核心部分,但也是这个项目的重点研究的一部分。
二,界面和程序计算机辅助设计
光象棋引擎不能满足人机交互的基本要求,因此需要一个框架(接口)为载体。
下面分别介绍每个部分的实现。
由于界面和程序的辅助部分涉及的内容广泛和复杂,本文只介绍了关键的部分。
2需求分析
2.1界面要求
如图
棋子走的地方,被称为“棋盘”。
矩形平面画,共有90个点,9个平行的垂直线和平行的水平线10相交
点,在交叉点上的碎片。
中间部分的第五,第六两条水平线板画垂直线之间的空白地带称为“河界”。
水平之间的第四至第六部分的两端,中间的两端构成的斜交叉线的“米”字框,称为“九宫”(它恰好有九个交叉点)。
棋盘被河界分为两等份。
为方便游戏记录和学习中国象棋,现行的规则:
根据与中国数字由右至左的9个垂直线-个代表红方各垂直线,用阿拉伯数字'
1'
到'
9“代表黑色每个竖条。
中国象棋的开始之前,红色,黑色和双方应该是一个棋子放置在指定的位置。
任何棋子每走一步,进就写“进”退就写“退”之类的车,侧身上写“平”。
2.2规则要求
1.下棋
在游戏中,由红棋先走,双方轮流走,直到一个赢家,每个人下棋,棋子从一个交叉点到另一个空的交叉点,或吃对方的棋子占领叉点,被认为是走了一着。
每一方都走过之后,被称为一个回合。
2.所有的棋子移动如下:
帅()每个被允许走一步前进,后退,水平可以,但不能出了“九宫”。
帅和将不会被允许在同一条直线上直接对面,如果一方已经占用的,必须避免。
士每次只允许沿“九宫斜线一步,可以撤退。
象不能过河的边界,可进可退俗称相走田字。
当另一个在卍中心,俗称赛象眼,马走日,可以撤退到,当地另一个棋子挡住,俗称为”蹩马腿不能走过去,车可直进直退,横走,而不限步数。
跑在不吃子的时候,走法同车一样;
兵(卒)在没有过"
河界"
前,每着只许向前直走一步;
过河后,也可以交叉步,但能不能转回来。
3.吃子
走一招,如果自己的棋子的位置,有其他棋子存在,你可以把他吃掉而占领那个位置。
只有跑必须从一块分开(无论哪一方)跳吃,俗称“炮翻山”之称。
除了帅,其他字都可以让对方吃,或主动被吃。
4.将军、应将、将死
一方攻击对方的帅(将),下一步将要吃掉它,被称为“将军”。
“将军”必须立即“应将”,使用自卫,以解决“将”的状态。
如果在“将军”不能”应将,即使是”死“。
2.3判定输赢
1.结果
游戏时,有下列情形之一,即使输棋,对方的胜利:
(一)帅被对方“将死”
(二)帅(将)被“将军”,彼此无法避免(帅)直接对面;
(三)“被困死”;
(四)不规定的时限内,未走完应走的数量;
(五)超过比赛规定的时限(一般为15分钟);
(六)封棋着法有误;
(七)走棋举动违反了禁令,应当变着而不变;
(八)在相同的游戏棋中,单方面的第三个“违例”;
(九)自称认输;
(10)违反纪律。
和棋,有下列情形之一的,即使是平局:
(一)从理论上确认当事人没有双赢的局面可能;
(二)建议和棋,并应使双方机会均等。
世卫组织第一次抽签被拒绝(口头不同意,或走出去圆一招,被拒绝),由对方(也否认),不得再次提出,但下列(三)未提及(D)同属提到的特殊规定,不受此限。
如果双方提及,等权数,可以由任何一方再次提及。
提到和党明确指出,在另一方面,它不能撤回其报价。
只要是一方提和,另一方当事人已声明,双方同意不准回去。
此外,只提前按时钟的另一侧。
(三)双方下棋循环反复达三次,在象棋的有关规定,可由任何一方提议作和,经审查局面属实,即使另一方不同意,裁判员也有权判为和棋。
如果双方都没有提及,并循环反复的情况仍在继续,裁判不同意,决定判处各方的权利和行走方法有重复的情况与周期无关,你不能按照本条处理。
(四)符合60轮规则“(也称为自然限)。
3系统设计与实现
3.1系统模块划分
本系统主要功能模块如图:
3.2系统主要流程图
系统初始化流程图
计算机查找走法流程图
3.3相关数据定义
constintMAN=0;
//人
constintCOM=1;
//计算机
constintRED=0;
//红方
constintBLACK=1;
//黑方
constintRED_K=0;
//红帅
constintRED_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};
//棋子类型与图标的序号相同
#defineManToTypeManToIcon
constintManToType7[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};
4系统测试运行
4.1测试方案设计
编码过程完成后,最重要的是对系统的测试工作,系统测试阶段,有两个时期,通常在第一段做单元测试,另一段做全面系统测试。
在模块测试中,我们考虑以下几个方面:
模块接口;
局部数据结构;
重要程序算法;
错误处理通道;
影响上述边界条件。
代码审查,从数据类型,变量声明,数据的结构进行审查,其次进行功能测试,并开始再次输入一些简单的数据,观察操作过程中变量的变化,在运行中的值的范围。
改变测试方法转换另一个角度测试发现错误和记录,修改代码,测试条件,使用多层的程序分支,以完成模块的测试。
使用增量集成测试,整体测试是组装软件系统技术,系统测试,测试一个单独的模块,将已完成测试模块添加到系统中,系统测试,系统中的所有模块,在一个特定的测试自上而下从主控制模块,并沿着控制层,并逐步的把所有模块组合起来测试。
4.2测试过程及结果
4.3系统的优缺点分析及改进方案
在有限的时间,通过努力,已基本完成象棋游戏。
界面更实用,系统稳定性好,可以在不同的计算机上运行平稳。
由于系统完成匆忙,也有一些缺陷和不足,如界面设计,并没有满足审美效果;
系统的功能也少,并不能满足象棋游戏的所有要求。
可能还有一些未知的错误,在实际使用过程中会被发现,在以后还需连续修改完善系统功能。
4.4系统性能分析
同时,这个系统是我自己设计的毕业,因为个人的知识和缺乏软件开发经验和其他因素的限制,仍有不足之处在所难免,所以在未来的系统升级改善,将全面补救。
此外,由于时间紧,不能全面,详细的测试,所以可能无法全面测试的准确性和完整性。
这些问题是这个系统的未来升级和改善的目标。
结论
统经过一段时间的数据采集,系统设计,编写代码和程序测试,终于完成我的毕业设计,本系实现了基本的中国象棋游戏的人机对弈,采用了VC++开发工具MICROSOFTVISUALSTUDIO2008。
在设计时采用模块化、低耦合的模块划分。
在测试时采用增量集成测试方法,每集成一个模块就测试一遍,这样不容易出现混乱,对于程序的纠错是很有利的。
本设计方案实现的象棋游戏功能比较简单,优点在于能大大降低设计难度。
所以下一步的研究方向就是对程序的功能进行进一步完善,使其界面更友好,给使用者(玩家)更好的体验。
致谢
短短几个月的毕业设计马上就要结束了,我学到了很多课堂上学不到的东西,编程和实际操作有了很大的提高。
本次毕业设计与许多人的帮助是分不开的,学习了很多有益的东西通过。
成功完成毕业设计,首先要感谢我们的指导老师。
老师认真负责的工作态度,严谨的治学精神和深厚的理论水平,使我受益匪浅。
他无论在理论上还是在实践中,他给了我许多宝贵的建议,以解决许多技术问题,给我们很大的帮助,所以我得到了很大的改善。
为我今后的工作和学习有很大的帮助,感谢他为他的耐心指导。
也多亏了计算机科学系机房提供了良好的环境。
很多支持我们的毕业设计的顺利完成。
参考文献
[1]王小春.PC游戏编程(人机博弈)[M].重庆大学出版社,2002.
[2]网冠科技.VisualC++.NET小游戏开发时尚编程百例[M].机械工业出版社,2004.
[3]陈建春.VisualC++高级编程技术——开发实例剖析[M].电子工业出版社,1999.
[4]涂光平等.VisualC++.NET基础教程与上机指导[M].清华大学出版社,2005.
[5]伍红兵.VisualC++编程深入引导[M].中国水利水电出版社,2002.
[6]徐心和,王骄.中国象棋计算机博弈关键技术分析[J].小型微型计算机系统,2006,27(6):
961-969.
[7]胡达.C++Builder程序设计范例——中国象棋[M].清华大学出版,2002.
[8]涂志坚.电脑象棋的设计与实现[C].中山大学硕士学位论文,2004.
[9]魏钦刚,王骄,徐心和,等.中国象棋计算机博弈开局库研究与设计[J].智能系统学报,2007,2
(1):
85-89.
[10]MichaelBowling,JohannesFü
rnkranz,andThoreGraepel.MachineLearningandgames.MachineLearning[J].2006,63:
211-215.
[11]王骄,王涛,罗艳红,等.中国象棋计算机博弈系统评估函数的自适应遗传算法实现[J].东北大学学报,2005,126(10):
949-952.
[12]付强,陈焕文.中国象棋人机对弈的自学习方法研究[J].计算机技术与发展,2007,17(12):
76-79.
[13]周玮,王水涛,孙旸.中国象棋计算机博弈中的一种数据结构方法[J].计算机工程与应用,2006.35:
219
[14]莫建文.机器自学习博弈策略研究与实现[C].西师范大学硕士学位论文,2002.
[15]Berliner,H.J.TheB*-treesearch:
Abest-firstproofprocedure.ArtificialIntelligence[C],1979,12
(1):
23-40.
[16]危春波.中国象棋博弈系统的研究与实现[C].昆明理工大学硕士学位论文,2008.