UML五子棋设计

上传人:壹****1 文档编号:565034431 上传时间:2023-10-19 格式:DOC 页数:46 大小:674KB
返回 下载 相关 举报
UML五子棋设计_第1页
第1页 / 共46页
UML五子棋设计_第2页
第2页 / 共46页
UML五子棋设计_第3页
第3页 / 共46页
UML五子棋设计_第4页
第4页 / 共46页
UML五子棋设计_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《UML五子棋设计》由会员分享,可在线阅读,更多相关《UML五子棋设计(46页珍藏版)》请在金锄头文库上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateUML五子棋设计一、项目背景单机版五子棋UML设计郑州大学信息工程学院姓名学号易晓沛(组长)20137670344吴家贝20137670340崔云开20137670407杨照方20137670343李庆仁2013767孙迎春20137670332陈仟仟201376703041.需求分析1.1项目背景五子棋是一种两人对弈的纯策略型汉族棋类益智游戏,棋具与围棋通用,由中国

2、汉族人发明,起源于中国上古时代的传统黑白棋种之一。主要流行于华人和汉字文化圈的国家以及欧美一些地区。规则为双方交替落子,直到有一方下出五子连续,五子连珠为赢。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。1.2项目技术支撑使用UML语言进行需求分析设计;在Visual Studio 2010集成开发环境下用C+语言及.NET架构编写软件。1.2.1 UML简介Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开

3、发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。 面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。Grady Booch的描述对象集合和它们之间的关系的方法。James Rumbaugh的对象建模技术(OMT)。Ivar Jacobson的包括用例方法的方式。还有其他一些想法也对UML起到了作用,UML是Booch, Rumbaugh, Jacobson。UML已经被对

4、象管理组织(OMG)接受为标准,这个组织还制定了通用对象请求代理体系结构(CORBA),是分布式对象编程行业的领头羊。计算机辅助软件工程(CASE)产品的供应商也支持UML,并且它基本上已经被所有的软件开发产品制造商所认可,这其中包括IBM和微软(用于它的VB环境)。UML规范用来描述建模的概念有,类(对象的)、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态。1.2.2 C+简介C+是一种安全的、稳定的、简单的、优雅的,面向对象的编程语言。它在继承C强大功能的同时去掉了一些它们的复杂特性。C+综合了VB简单的可视化操作、高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特

5、性和便捷的面向组件编程的支持成为.NET开发的首选语言。1C+是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。2系统概要分析2.1 基本设计概念本软件采用面向对象的设计方案,通过把对弈接口组件化,来实现界面设计与算法设计的完全分离。 游戏程序界面对弈接口组件搜索算法引擎估值算法核心游戏界面只与对弈接口进行相互通讯,与使用的博弈算法无关。搜索算法引擎通过递归调用估值算法核心来找出最佳落子点。对弈接口组件将具体的博弈算法封装成可以与界面交互的接口。图1 总体处

6、理流程图 2.1.1类模块结构表1 类模块列表类标识符类名功能TGobangForm五子棋主程序窗体类它是程序界面设计部分的实现,它主要负责界面的绘制,而真正的人机对弈操作委托GobangAI来完成。TGobangAI五子棋对弈接口类它定义了完成人机对弈的操作接口,这样主窗体类可以通过这些操作接口来完成人机对弈的过程。而实际这些操作的实现是通过桥接的方式委托搜索引擎SearchEngine来完成的。TBestMove最佳走法的线程类它是通过委托TGobangAI实例中的SearchEngine对象的GetBestMove操作来找出当前电脑的最佳走法。而它本身却是在TGobangAI中被实例化并

7、被调用的。TSearchEngine搜索引擎类在它当中定义了搜索算法所需要的数据结构和操作,而搜索算法中的核心操作是委托估值核心Evaluator来完成的。TEvaluator估值核心类在它当中定义了估值核心所需要的数据结构和操作,并实现了估值核心。表2 各个类中的属性和操作列表属性操作标识符所属类功能BoardTGobangAI返回指定位置落子状态,委托SearchEngine实现MoveTGobangAI返回所指定的步数的走法,委托SearchEngine实现ScoreTGobangAI返回所指定步数的走法得分,委托SearchEngine实现CurMoveTGobangAI返回当前走法索

8、引,委托SearchEngine实现StoneColorTGobangAI设定或返回电脑的棋色LevelTGobangAI设定或返回电脑的棋力水平值IsStartTGobangAI返回游戏是否开始AddStoneTGobangAI玩家下子,如果玩家未赢,则紧跟着电脑下子GiveUpTGobangAI玩家认输GoBackTGobangAI玩家悔棋,棋局退回到玩家下最后一颗子之前的状态StartTGobangAI开始游戏,开局后,棋色和棋力属性将不能再改变StopTGobangAI结束游戏,游戏结束后,棋色和棋力属性可以改变BoardTSearchEngine返回或设定指定位置落子状态,委托Eva

9、luator实现MoveTSearchEngine返回所指定的步数的走法ScoreTSearchEngine返回所指定的步数的走法得分CurMoveTSearchEngine返回当前走法索引WinnerTSearchEngine返回获胜者IsGameOverTSearchEngine返回游戏是否结束GetBestMoveTSearchEngine返回最佳走法BoardTEvaluator返回或设定指定位置落子状态IsDrawTEvaluator返回是否平局GetScoreTEvaluator返回棋局估值上面所列出的属性和操作仅为public的属性和操作,private的变量、属性和操作这里没有

10、给出定义,它们将在接口设计和系统数据结构设计中进行讨论。另外TGobangAI是一个组件类,其中定义了三个比较特殊的事件属性,通过这三个事件,可以使界面设计更加灵活方便,这三个事件的功能在下表中给出:表3 TGobangAI组件中的事件定义列表事件描述OnGameStart游戏开始事件OnChange游戏中棋盘状态改变所触发的事件OnGameOver游戏结束事件2.1.2 功能需求与程序的关系TGobangFormTGobangAITSearchEngineTEvaluator界面界面算法接口算法2.1.3 尚未解决的问题因为博弈算法中搜索引擎的改进是影响整个游戏智能化程度的关键,但是搜索算法

11、有很多,现在还不能确定哪种搜索算法更适合于本游戏,这些算法的测试将在详细设计和编码调试时再进行。2.2 接口设计2.2.1 用户接口用户的所有操作全部通过鼠标或者热键来完成。开始游戏、悔棋、认输和结束游戏这些操作通过点击按钮、右键菜单或使用热键来完成。棋色和水平选择通过点击单选框或右键菜单来完成。游戏中棋子状态将直接反映在棋盘上,其他反馈信息(比如棋盘当前局面、走棋时间、棋谱等信息)将在单独的反馈信息栏中显示。2.2.2 外部接口本程序与其他比赛程序通过裁判程序(有比赛裁判委员会给出)来进行相互通讯,棋盘上落子通过鼠标事件的触发来完成,裁判程序将模拟这一鼠标事件。裁判程序对棋盘状态的获取将直接

12、根据棋盘颜色变化来检测。2.2.3 内部接口TGobangAI组件定义了界面和算法的接口,TGobangAI中聚合了TSearchEngine类的实例FSearchEngine,而TSearchEngine中聚合了TEvaluator的实例FEvaluator。通过这种设计,提高了系统的松散耦合性。2.3.流程图2.3.1主模块图 五子棋界面及画图函数模块主控模块先后手模块块人机对战模块胜负判断模块 2.3.2 界面及图形模块界面及图形模块欢迎界面设计函数模式选择界面游戏进行界面结束界面棋子函数2.4 UML设计2.4.1系统用例图2.4.2动态交互图2.4.3静态类图2.4.4包图2.4.5

13、流程图3.详细设计3.1基本操作3.1.1界面以及落子处理1.使用二维数组Chessboard15,15储存棋盘的状态,以0表示没有放子的位置,以1表示放黑子的位置,以2表示放白子的位置;2.以鼠标的状态提示当前持子的一方;3.将棋盘作为图片的形式贴处在程序界面上;4.加载棋子资源(黑、白棋子),当鼠标在棋盘上点击的时候产生事件,处理鼠标的位置产生对应的棋盘坐标位置;5判断落子出是否可以落子:不可以则不做任何处理,不改变鼠标的状态;可以落子,则打印对应的棋子图像,记录棋盘位置,并将位置传递给判定函数;6.交换持子方,重复落子过程,直到判定函数产生胜出结果;图2系统界面3.2五子棋判胜本功能模块

14、主要对游戏的胜负进行判定.1.由玩家输入棋子所在位置,由系统判定胜负,若胜,则游戏结束;否则,游戏继续.2对胜负判定需先确定一个中心棋子位置.3由一个中心棋子可以引出四条线形成五子连一线.4判定过程中注意越界现象.概要设计1五子棋的判胜条件即为5个相同的棋子连在一条线上.2以一个棋子为中心,有4条线可以形成五子连线.如图所示:(描红的为中心棋子)3中心棋子即为最后一步所下棋子.4以1线为例,从中心棋子出发(设为白子),先向左进行判断,若棋子为白子,则计数器加1(初始值为1),否则(为黑子或无子),则返回中心棋子,向右进行判断,进行相同操作. 51线判定结束后,若计数器为5,则判白子胜,否则,计数器归1,再从2,3,4线按顺序进行判定.6棋盘的每个坐标有3个状态,分别为无子(标记为0),白子(标记为1),黑子(标记为2),对棋盘点进行判断时,只需判定其所在状态即可。7若棋盘下满,仍未有五子

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号