五子棋计问文档.docVIP

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

目 录 TOC \o 1-3 \h \z \u HYPERLINK \l _Toc335324198 1. 五子棋设计需求分析 PAGEREF _Toc335324198 \h 1 HYPERLINK \l _Toc335324199 2. 五子棋框架设计 PAGEREF _Toc335324199 \h 2 HYPERLINK \l _Toc335324200 3. 五子棋详细设计 PAGEREF _Toc335324200 \h 4 HYPERLINK \l _Toc335324201 4. 设计的缺陷 PAGEREF _Toc335324201 \h 5五子棋设计需求分析序号需求紧急状况难易程度完成时间1人机对战一般难2双人对战紧急难16:003网络对战不急极难4棋盘大小可设置紧急容易12:005一局结束后是否继续紧急容易12:006求和一般一般7认输一般一般8悔棋一般一般9下棋时间限制一般一般10棋子重叠处理一般一般14:0011范围出界处理一般一般15:00五子棋游戏的需求暂时想到这些,可能还有有些比较重要也有趣的需求未知,日后想到再添加,其中网络对战模式和人机对战模式比较复杂,先完成其他基本功能在进行此项工作。但须充分考虑其接口,方便添加这两项而不需要大改动。五子棋框架设计五子棋单机游戏主要有人机对战模式和双人对战模式为主,但不管是人或者计算机,他们都是游戏参与者,没有区别,唯一的区别是他们在下一步棋时,计算机需要依据对方的棋势使用不同的算法,而人是有考虑的,自己思考然后指定位置出棋。在本次设计中,将可选择人机模式或者双人模式,他们都是游戏者模块类,还有一个棋盘类。在游戏者类中对棋盘进行操作,也就是出棋子。框架类图如下 REF _Ref335310802 \h 图 1:图 SEQ 图 \* ARABIC 1 框架类图框架比较简单,Gamer类引用Table类,Gamer对象每操作一步,Table对象将会改变状态而重新显示。那么是不是要每个游戏者都要创建一个Gamer对象呢,当然可以,但我没有这样做,在Gamer中设置两个游戏者标志,用以表示当前是谁在下棋,下一步又到哪位选手即可,还有判断是否有某一方赢棋的接口。这两个标志分别是flaga和flagb。分别用各自的接口对其进行设置和清楚。在类Table中用一个二维数组表示棋盘,默认大小是20x20(可设置),默认初始化为个位置上用‘.’表示空,创建棋盘是都为空。当游戏者下棋之后该位置变为有黑子或白子,之后刷新棋盘。框架流程图如下 REF _Ref335313373 \h 图 2:图 SEQ 图 \* ARABIC 2 框架流程图由此流程图可以很清楚的知道本设计的轮廓,以及程序是如何设计运行的。了解框架类图及整个流程之后,下面进行详细设计。五子棋详细设计根据框架类图进行实现各个接口,以及根据流程图实现各需求功能。本设计打算先实现双人游戏模式和人机模式,这两个模式基本是一致的,区别是人机模式中计算机一方出棋的实现。那么这里介绍双人模式的详细设计部分即可。在进入双人模式游戏之后,首先,通常五子棋棋盘可以根据游戏者能力进行设置,因为棋盘太小可能会导致太多和棋,进行设置就灵活了很多。确定棋盘之后进行选择哪一方先出棋,以显公平。循环交换下棋,直至一方胜出或者棋盘已满。程序设计流程图如下 REF _Ref335317272 \h 图 3:图 SEQ 图 \* ARABIC 3 详细设计流程图出棋者一方出棋之后,根据棋盘上数据进行正确性判断,如出棋者所放棋子位置已有棋子存在则提示错误,有该选手继续放棋,或者出棋者所指位置超出棋盘范围同样的处理。知道该位置可以放下棋子。出棋函数传递棋盘引用、以及行列坐在位置为参数,函数原型为:void NextStep(Table T,int hang, int lie)由上图可知,在一方下棋之后判断是否刚下棋的一方已经胜出,如已经胜出,则提示是否继续游戏,否则检测是否棋盘已满造成和棋,如未满则继续交换下棋。在判断是否有一方赢出是须判断横、竖、斜是否有五颗棋子一样即可。若是人机游戏模式,那么就是人和计算机互相交换出棋,计算机出棋接口尚未实现。本设计实现简单,留有人机游戏模式中计算机下棋接口,将其接口实现即可进行该模式游戏。设计的缺陷由于时间原因,本设计还有很多缺陷,首先部分功能没有做到,例如认输、求和、撤销等,还有设计本身的也不太合理,我觉得每个游戏参与者一个对象更加方便一写,改进后类图应该如下 REF _Ref335321056 \h 图 4:图 SEQ 图 \* ARABIC 4 改进后框架类图GameBase是游戏参与者基类,它的两个子类分别是人是参与者以及计算机是参与者的类。他们通过基类接口操作棋盘,这样不管是双人对战模式还

文档评论(0)

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

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

1亿VIP精品文档

相关文档