基于qt的中象棋游戏界面设计和实现.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)/ 当前局面 ( 检查地方的攻击 性棋子 ) 是否本方被将军 .

文档评论(0)

jinchenl + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档