- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中国象棋游戏的设计与实现 研究背景 中国象棋发展至今已有数千年的历史了,它是中华民族智慧的 结晶。在我国,中国象棋的普及程度是其它棋类无法比拟的,大 至国际、国内比赛,小至社区街道。如今,仅中国就有 2 亿人会下 中国象棋,且中国象棋的发展趋势日益国际化。本文首先研究了 中国象棋在计算机中的表示问题,讨论如何产生着法等一系列相 关内容,其次研究了博弈树的搜索技术及在此基础上发展起来的 相关 剪枝算法。系统使用 MFC 文档视图体系结构和 QT 开发工具, 实现了一个具有一定棋力的中国象棋人机对弈程序。此博弈程序 实现了人机博弈,悔棋,电脑难度设置,着法名称生成等功能 。 目录 1 绪论 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 中国象棋研究背景 ? 国内外象棋软件发展概况 ? 最早的象棋软件是一副可以外出携带的电子棋盘,后来升级到 电视游戏机。开始出现的一些容量很小的象棋软件如: DOS 界 面《将族》、 WIN31 程序的《中国象棋》等等,与其说人类下 不过电脑,倒不如说是没有耐性等待电脑程序慢吞吞的搜索算 法,有时甚至怀疑软件是否在搜索中死掉了。后来,网络上先 后出现了真正的 WINDOWS 窗口界面的象棋专业高级软件《棋 隐》、《象棋世家》、《象棋参谋》、《象棋奇兵》等。总而 言之,各类象棋软件既有自身的优点,也存在共通性的缺陷, 如:中局审势不够智能化,走不出弃子取势的人性化佳构,残 局时智力明显低于人脑,难以走出残局例胜的必然着法等。放 眼未来,象棋软件已经走完了一波持续上涨的行情,有可能出 现逐步降温的滑坡趋势。 主要功能 该象棋人机博弈系统实现的功能主要 包括: 1 、选手选择(人或电脑); 2 、人机对弈(人与电脑竞技); 3 、悔棋、还原; 4 、着法名称显示(象棋走棋规范名称) 主要工作 1.1 本程序 的 主要工作 第一部分主要介绍了中国象棋游戏开发的背 景及意义、国内外象棋软件的发展概况和 象棋游戏的设计研究方法; 第二部分介绍了棋局表示方法和着法生成; 第三部分介绍了走棋和博弈程序的实现; 第四部分介绍了系统的实现。 算法设计 采用 short board[256] 表征棋盘 , 非棋盘位置 0. 棋盘上无 棋子的位置也为 0. 采用 256 长度的数组 , 可以方便的像使 用二位数组那样使用一维数组 , 如想要表征第三行第四 列 , 只需使用 board[0x34] 即可 . 算法设计 1.1 悔棋和还原功能的实现 悔棋和还原是棋类软件中较为基本的功能。要实现悔棋和还原 功能,首先要明确哪些信息应当被保存以供悔棋和还原所 使用。 在程序中保存了如下信息: 棋局表示中所定义的棋盘数组; 各棋子的贴图位置; 这里需要特别说明的是通常象棋程序处于程序效率的考虑并不 保存所有棋子的信息,而只是保存之前一步的走棋信息。 此后当悔棋的时候,需要撤销着法;还原的时候,需要执 行着法。然而,在编写自己的程序时一来考虑到程序的可 读性和不易出错性,二来考虑到对当今的计算机的配置来 说这点开销基本上不会对程序的效率产生什么影响。因此 保存了全部棋子的信息。 算法设计 在悔棋中主要完成了以下任务: 1 、下棋回合数减一; 2 、将当前局面信息保存至走法队列,以供还 原所用; 3 、从走法队列中取出上一回合的棋局信息, 恢复到当前局面,然后将其从 队列中剔除掉; 4 、将显示着法名称的列表框中的本回合的着 法名称保存到一个着法名称队 列,以供还原所用。然后从列表框中删除它。 算法设计 ( 三 ) 将军检测 将军检测功能的相关函数在 check 文件夹中 . checkmate.cpp 调用 check 文件夹中的其他函数 , 检 测当前方 ( 检查 side)/ 当前局面 ( 检查地方的攻击 性棋子 ) 是否本方被将军 .
您可能关注的文档
- 图解医联体 医学.ppt
- 土力学系列第 土压力计算.ppt
- 土木工程测量 第7章教案1.ppt
- 在中考中化学计算约占虽然所占比不大但试题属于中.ppt
- 在经过圆外点的切线上这一点和切点之间的线段的长叫做.ppt
- 在足球比赛前由裁判员掷一枚硬币由硬币的反面来确.ppt
- 地中海贫血产前诊断意义与技术 文档资料.ppt
- 地理生物中考与我新 文档资料.ppt
- 地质和水质基础知识.ppt
- 地震勘探技术野外工作方法反射波法.ppt
- 英语人教版四年级下册Unit4-At-the-farm.pptx
- 语文人教版四年级下册学习园地四.pptx
- 2024年共青科技职业学院高职单招语文2018-2023年考试题摘选含答案解析.docx
- 苏教版六年级上册《表面涂色的正方体》PPT.pptx
- 压力性损伤评估及个案留取方法.pptx
- 2024年上海交通职业技术学院高职单招数学历年高频考点试题含答案解析.docx
- 挤奶厅SOP试卷附答案.doc
- 2022-2023年教师资格之中学生物学科知识与教学能力综合提升练习题.docx
- 2023年期货从业资格之期货投资分析综合提升模拟考试试卷提供答案解析.docx
- 2024年03月河南郑州大学第三附属医院招考聘用硕士研究生48人笔试历年典型题及考点剖析附带答案含详解.docx
文档评论(0)