基于QT中国象棋游戏毕业设计答辩.ppt
《基于QT中国象棋游戏毕业设计答辩.ppt》由会员分享,可在线阅读,更多相关《基于QT中国象棋游戏毕业设计答辩.ppt(21页珍藏版)》请在三一文库上搜索。
1、中国象棋游戏的设计与实现,答辩人:张哲源 刘豪 指导教师:安海龙,研究背景,中国象棋发展至今已有数千年的历史了,它是中华民族智慧的结晶。在我国,中国象棋的普及程度是其它棋类无法比拟的,大至国际、国内比赛,小至社区街道。如今,仅中国就有2亿人会下中国象棋,且中国象棋的发展趋势日益国际化。本文首先研究了中国象棋在计算机中的表示问题,讨论如何产生着法等一系列相关内容,其次研究了博弈树的搜索技术及在此基础上发展起来的相关剪枝算法。系统使用MFC文档视图体系结构和QT开发工具,实现了一个具有一定棋力的中国象棋人机对弈程序。此博弈程序实现了人机博弈,悔棋,电脑难度设置,着法名称生成等功能。,目录,1 绪论
2、 1 1.1 中国象棋游戏设计背景和研究意义 4 1.2 国内外象棋软件发展概况 4 1.3 中国象棋游戏设计研究方法 4 1.4 本文的主要工作 4 2 棋局表示和着法生成 6 2.1 棋盘和棋子的表示 6 2.2 着法生成 9 3 走棋和博弈程序的实现 10 3.1 博弈程序的实现 10 3.1.1 搜索算法 10 3.1.2 着法排序 14 3.1.3 局面评估 18 3.2 悔棋和还原功能的实现 21 3.3 着法名称显示功能的实现 25 3.4 胜败判定 34 4 系统实现 37,中国象棋研究背景,国内外象棋软件发展概况 最早的象棋软件是一副可以外出携带的电子棋盘,后来升级到电视游戏
3、机。开始出现的一些容量很小的象棋软件如:DOS界面将族、WIN31程序的中国象棋等等,与其说人类下不过电脑,倒不如说是没有耐性等待电脑程序慢吞吞的搜索算法,有时甚至怀疑软件是否在搜索中死掉了。后来,网络上先后出现了真正的WINDOWS窗口界面的象棋专业高级软件棋隐、象棋世家、象棋参谋、象棋奇兵等。总而言之,各类象棋软件既有自身的优点,也存在共通性的缺陷,如:中局审势不够智能化,走不出弃子取势的人性化佳构,残局时智力明显低于人脑,难以走出残局例胜的必然着法等。放眼未来,象棋软件已经走完了一波持续上涨的行情,有可能出现逐步降温的滑坡趋势。,主要功能,该象棋人机博弈系统实现的功能主要包括: 1、选手
4、选择(人或电脑); 2、人机对弈(人与电脑竞技); 3、悔棋、还原; 4、着法名称显示(象棋走棋规范名称),主要工作,1.1 本程序的主要工作 第一部分主要介绍了中国象棋游戏开发的背景及意义、国内外象棋软件的发展概况和象棋游戏的设计研究方法; 第二部分介绍了棋局表示方法和着法生成; 第三部分介绍了走棋和博弈程序的实现; 第四部分介绍了系统的实现。,算法设计,采用short board256 表征棋盘,非棋盘位置0.棋盘上无棋子的位置也为0.采用256长度的数组,可以方便的像使用二位数组那样使用一维数组,如想要表征第三行第四列,只需使用board0x34即可.,算法设计,1.1 悔棋和还原功能的
5、实现 悔棋和还原是棋类软件中较为基本的功能。要实现悔棋和还原功能,首先要明确哪些信息应当被保存以供悔棋和还原所使用。 在程序中保存了如下信息: 棋局表示中所定义的棋盘数组; 各棋子的贴图位置; 这里需要特别说明的是通常象棋程序处于程序效率的考虑并不保存所有棋子的信息,而只是保存之前一步的走棋信息。此后当悔棋的时候,需要撤销着法;还原的时候,需要执行着法。然而,在编写自己的程序时一来考虑到程序的可读性和不易出错性,二来考虑到对当今的计算机的配置来说这点开销基本上不会对程序的效率产生什么影响。因此保存了全部棋子的信息。,算法设计,在悔棋中主要完成了以下任务: 1、下棋回合数减一; 2、将当前局面信
6、息保存至走法队列,以供还原所用; 3、从走法队列中取出上一回合的棋局信息,恢复到当前局面,然后将其从 队列中剔除掉; 4、将显示着法名称的列表框中的本回合的着法名称保存到一个着法名称队 列,以供还原所用。然后从列表框中删除它。,算法设计,(三)将军检测 将军检测功能的相关函数在check文件夹中. checkmate.cpp调用check文件夹中的其他函数,检测当前方(检查side)/当前局面(检查地方的攻击性棋子)是否本方被将军.若是返回true,否则返回false. 可以造成将军的棋子有对方的车/对方的马/对方的兵/对方的炮,另外,有不能对将的规定.因而对general/chariot/c
7、annon/horse/soldier这五类棋子各写了一个检测函数,它们都被checkmate.cpp中的bool checkmate()调用.,算法设计,AI部分采用bottom-up的方法设计,包括局面表示/走法生成/局面评估/将军检测/搜索算法.AI部分代码在kernel文件夹中.kernel文件夹中代码的组织与AI的结构同构.表征局面的数据结构以及其他一些全局变量在global.h中声明,在define_global.cpp中定义.move文件夹中为走法生成的函数.check文件夹中为将军检测函数.eval文件夹中为局面评估函数.search文件夹中为搜索函数.每个文件夹中都有test
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 QT 中国象棋 游戏 毕业设计 答辩
链接地址:https://www.31doc.com/p-5184157.html