资源描述:
《五子棋概要设计说明书》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、五子棋概要设计说明书1.1编写目的本文档在需求分析文档的基础上对程序进行设计,着重描述程序的总体框架和各个模块的关系,以便进行详细设计做准备。本说明书的预期读者包括:项目开发人员,特别是编码人员软件升级开发人员软件维护人员1.2背景1)软件系统名称:五子棋。2)任务提出者:李青山老师。任务开发者:DTO小组。用户:玩家。1.3参考资料《五子棋》软件设计报告杭州电子科技大学胡峰令1.4关于五子棋的资料·五子棋是起源于中国古代的传统黑白棋种之一。亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。·玩家根据自身等级和习惯,可以自由选择不同的游戏房间。其游戏规则也有所
2、不同。详细分为三种棋室:普通棋室、国标棋室、职业棋室。其中普通棋室不受任何规则限制;国标棋室有禁手规则限制;而职业棋室则在国标棋室的基础上增加“三手交换”和“五手两打”两项规则。(三手交换:是指黑棋下盘面第3着棋后,白方在应白④之前,如感觉黑方棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方,而黑方不可以不换。五手两打:是指黑棋在下盘面上关键的第5手棋时,必须下两步棋,让白棋在这两步棋中任选一步,然后再继续对弈。·国际比赛规则规定:对局中如黑方出现禁手,白方应立即指出禁手点,黑方即负。如白方在黑方出现禁手后,又落一步白子,黑棋禁手则不成立了。所以在"有禁手"的房间里,如果黑方出现禁手
3、,白方应立即按下"禁手"按钮。程序会判黑方负。如果这时白方又在棋盘上落一子,黑棋禁手则不成立了。为了简化用户对"禁手"按钮的使用,也有"走禁手就输"和"禁手不能落子"规则的房间,顾名思义不多介绍。虽然采取了禁手的限制,黑棋先行仍有优势,黑棋仍可以必胜。所以如果用户是高段位的棋手,或者想成为高手一定要选择国际上比赛选用的比赛标准,即“三手交换,五手两打”。2.总体设计2.1程序数据结构:1m_currBoard[LINES][LINES]记录当前棋盘状态,LINES=15,元素值为1代表该交差点下的是白棋,元素值为-1代表该交差点下的是黑棋,棋盘的显示,电脑获取最佳下子位置都基于此。2程序多
4、处用到了临时变量tempboard[LINES][LINES],以记录临时的棋盘状态,在电脑搜索棋盘已获取最佳下子位置时,为了不破坏原棋盘的状态,必须先将原棋盘状态复制给tempboard,然后再搜索当前棋盘,得到当前能下子的交叉点,供电脑搜索3m_markBoard[LINES][LINES]记录对棋盘的评分,电脑搜索棋盘,获取棋型,然后根据棋型评分(如成5以上,评分5000000),将各个空交差点的评分赋给m_markBoard,再选择最高的评分点下子4博弈树,博弈树的具体知识见相关资料。本程序没有显示地去构造博弈树,但实际上程序运行过程的堆栈机制已隐含地运用了博弈树。2.2功能与接口
5、设计voidSetInput(intinputx,intinputy);//切换对弈方式,mode为0切换到人机对弈,mode为1切换到本地对弈人人对弈功能:voidMyFiveChess::GetInput()人机对弈功能:voidMyFiveChess::GetOneStep(intplayer,boolComputerhelp),//录入一步棋,只能通过此函数刷新盘面//当player==1,Computerhelp==false时从外部录入玩家1的一步棋//当player==1,Computerhelp==true时电脑为玩家1下一步棋//当player==2,mode==0时电脑
6、为自己下一步棋//当player==2,mode==1,Computerhelp==false时从外部录入玩家2的一步棋//当player==2,mode==1,Computerhelp==true时电脑为玩家2下一步voidMyFiveChess::PlayComputer(intchess),接口及功能说明//电脑走一步棋,player值为1表示为玩家1走一步棋,player值为2表示为玩家2获电脑自/己走一步棋,chess表示下一步将要下的棋子类型,黑子或白子实现电脑智能部分(简称AI)longMyFiveChess::MarkOne(intchess,intx,inty,intb[
7、][LINES]),接口及功能说明://对交叉点进行评分,b为棋盘,chess为将要下的棋子类型,x,y为落子的评分longMyFiveChess::Search(intchess,intx,inty,intb[][LINES],intsearchtype),接口及功能说明://对下在点上的棋子对棋盘造成的影响(主要看能形成什么棋型)searchtype为搜索的//方向,值为0表示横向搜索,值为1表示竖向搜索,