五子棋应用设计实验报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
五子棋应用设计实验报告

计算机实习报告 姓名: 傅博文 班级: 2010211108 学号:小班序号:01 指导老师:方莉 题目:五子棋应用设计 邮箱:fubowen807@ 五子棋应用设计实验报告 一.功能说明 1.1总体功能说明 该程序的主要的功能是实现五子棋游戏的应用,可以进行人机对战和双人对战。 1.2用户界面 该界面是一个欢迎界面,可以让玩家选择对战模式:双人对战模式或人机对战模式;也可以退出游戏。按1为双人对战,2为人机对战,0为退出 如果按1,则要跳转到该界面提示您选择了双人对战模式,输入黑棋和白棋玩家的姓名 如果按2,跳转到该界面提示您选择了人机对战模式,接下来您可以选择先手执黑或后手执白,并输入您的姓名。 接下来该界面便是游戏界面,会提示您轮到黑方还是白方落子,该棋盘实际是一个坐标图,已经划分了格子,您要以输入坐标形式实现落子,具体操作为x y形式,x坐标和y坐标之间用空格隔开。例:5 7。如果输入形式有误,会提示您输入有误。 游戏结束界面,显示您的胜负,并且显示成绩前5名的玩家姓名,可以按任意键返回主菜单。 1.3使用方法 游戏的基本操作前面的图示已经有说明,它的使用方法基本就是选择对战模式,执子,输入姓名,之后进行游戏。 二.程序设计说明 2.1 总体设计框架 1.类的设计: 根据C++面向对象编程的设计思路与构想,我们设计了两个类,分别为棋盘类(chessboard)和玩家类(player) 2.棋盘类(chessboard) 此类为程序的核心部分,用于电脑玩家数据的计算,设置格点状态,棋盘的输出等操作。 3.玩家类(player) 此类用于读入和显示棋步,判断棋子位置是否合理,判断胜利,计算机计算设置等操作。 4.其他部分 棋盘类代码: 主要成员变量: 棋盘格点状态 用于储存棋盘格点信息 棋盘格点分数 用于记录棋盘对应格点各自的分数 成员函数说明: 构造函数: 定义棋盘横行纵列,定义格点底分 析构函数 输出棋盘函数 函数用于棋盘的刷新和输出 计算分数函数 计算棋盘上每一点对应的分数,为电脑下子做准备 得到最大分数点函数 扫描棋盘各点,选择分数最大的位置赋给max_mark 设置格点状态函数 得到格点状态函数 返回格点位置 更新格点分数 函数得到新的格点分数 alpha,Beta剪枝函数 剪枝函数用于进行数据优化处理 估值函数 估值函数进行格点分数的估值处理 设置底分函数 玩家类——player 玩家类代码如下: 主要成员变量 指针型棋手姓名 用于储存选手的姓名信息,为私有类型 棋子落点指针 指示落子的信息,为私有类型 棋子颜色 记录棋子的颜色,为私有类型 步数 记录开局以来的每一方下棋的步数,为私有类型 成员函数说明 player()构造函数: 对棋手姓名、落子位置、步数、棋子颜色进行初始化 2) ~Player()析构函数 3) getName()玩家姓名: 函数用于输入玩家的姓名 getMove()读入棋步 函数用于读入棋步,如果判断输入非整形,提示重新输入,步数累计加一,设置格点状态用于棋盘输出 displayMove()显示棋步 函数用于显示黑棋(白棋)第几手 checkLegal()判断是否合法 布尔型函数,判断输入是否合法,输入合法返回true,不合法返回false checkWin()判断胜利 布尔型函数用于判断是否胜利,检查八个方向,如果一方计数达到4则判断胜利,否则判断失败。 void setColor();//设定棋子颜色 函数用于设定棋子的颜色 void computerMove();//计算机玩家自动计算 函数用于计算机玩家自动计算选择积分最大之巅并移动,记录步数加一。 dataoutput()数据输出函数 用于输出姓名、步数、棋子颜色等信息。 2.2 关键算法描述 算法1: Alpha,Beta剪枝函数的实现 输入参数:最小值int a,最大值int b,搜索深度int n,棋子颜色c_state color,格点坐标point pt。 输出参数:返回可能得到的估值最大值a。 算法功能:对部分博弈树进行n步的搜索,得到最大估值a与最大估值点pt,并将最大估值点(可能不止一个)用随机方法选取取出。 程序中作用:作为人机对战时AI判断最优点的函数。 算法2: 英雄榜按照获胜步数升序排序(冒泡排序法) 输入参数:无 输出参数:无 算法功能:英雄榜按照获胜步数冒泡排序。 程序中作用:同上。 2.3 程序设计的难点和关键点 AI的设计: alpha-beta剪枝的选择应用。 估值函数的确定 2.4 调试的方法 类之间对象调用问题 C++可以实现类的封装,更利于对数据的保护。

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档