五子棋设计问文档.doc
上传人:qw****27 上传时间:2024-09-11 格式:DOC 页数:7 大小:241KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

五子棋设计问文档.doc

五子棋设计问文档.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

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