当前位置:文档之家› UML五子棋设计

UML五子棋设计

单机版五子棋
UML设计
郑州大学信息工程学院
1.需求分析
1.1项目背景
五子棋是一种两人对弈的纯策略型汉族棋类益智游戏,棋具与围棋通用,由中国汉族人发明,起源于中国上古时代的传统黑白棋种之一。

主要流行于华人和汉字文化圈的国家以及欧美一些地区。

规则为双方交替落子,直到有一方下出五子连续,五子连珠为赢。

容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。

1.2项目技术支撑
使用UML语言进行需求分析设计;在Visual Studio 2010集成开发环境下用C++语言及.NET架构编写软件。

1.2.1 UML简介
Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。

面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。

它不仅统一了Booch、Rumbaugh 和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。

Grady Booch的描述对象集合和它们之间的关系的方法。

James Rumbaugh的对象建模技术(OMT)。

Ivar Jacobson的包括用例方法的方式。

还有其他一些想法也对UML起到了作用,UML是Booch, Rumbaugh, Jacobson。

UML已经被对象管理组织(OMG)接受为标准,这个组织还制定了通用对象请求代理体系结构(CORBA),是分布式对象编程行业的领头羊。

计算机辅助软件工程(CASE)产品的供应商也支持UML,并且它基本上已经被所有的软件开发产品制造商所认可,这其中包括IBM和微软(用于它的VB环境)。

UML规范用来描述建模的概念有,类(对象的)、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态。

1.2.2 C++简介
C++是一种安全的、稳定的、简单的、优雅的,面向对象的编程语言。

它在继
承C强大功能的同时去掉了一些它们的复杂特性。

C++综合了VB简单的可视化操作、高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。

[1]
C++是面向对象的编程语言。

它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。

2系统概要分析
2.1 基本设计概念
本软件采用面向对象的设计方案,通过把对弈接口组件化,来实现界面设计与算法设计的完全分离。

2.1.1类模块结构
表1 类模块列表
表2 各个类中的属性和操作列表
上面所列出的属性和操作仅为public的属性和操作,private的变量、属性和操作这里没有给出定义,它们将在接口设计和系统数据结构设计中进行讨论。

另外TGobangAI是一个组件类,其中定义了三个比较特殊的事件属性,通过这三个事件,可以使界面设计更加灵活方便,这三个事件的功能在下表中给出:
表3 TGobangAI组件中的事件定义列表
2.1.3 尚未解决的问题
因为博弈算法中搜索引擎的改进是影响整个游戏智能化程度的关键,但是搜索算法有很多,现在还不能确定哪种搜索算法更适合于本游戏,这些算法的测试将在详细设计和编码调试时再进行。

2.2 接口设计
2.2.1 用户接口
用户的所有操作全部通过鼠标或者热键来完成。

开始游戏、悔棋、认输和结束游戏这些操作通过点击按钮、右键菜单或使用热键来完成。

棋色和水平选择通过点击单选框或右键菜单来完成。

游戏中棋子状态将直接反映在棋盘上,其他反馈信息(比如棋盘当前局面、走棋时间、棋谱等信息)将在单独的反馈信息栏中显示。

2.2.2 外部接口
本程序与其他比赛程序通过裁判程序(有比赛裁判委员会给出)来进行相互通讯,棋盘上落子通过鼠标事件的触发来完成,裁判程序将模拟这一鼠标事件。

裁判程序对棋盘状态的获取将直接根据棋盘颜色变化来检测。

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流程图
3.详细设计
3.1基本操作
3.1.1界面以及落子处理
1.使用二维数组Chessboard[15,15]储存棋盘的状态,以0表示没有放子的位置,以1表示放黑子的位置,以2表示放白子的位置;
2.以鼠标的状态提示当前持子的一方;
3.将棋盘作为图片的形式贴处在程序界面上;
4.加载棋子资源(黑、白棋子),当鼠标在棋盘上点击的时候产生事件,处理鼠标的位置产生对应的棋盘坐标位置;
5.判断落子出是否可以落子:不可以则不做任何处理,不改变鼠标的状态;可以落子,则打印对应的棋子图像,记录棋盘位置,并将位置传递给判定函数;
6.交换持子方,重复落子过程,直到判定函数产生胜出结果;
图2系统界面
3.2五子棋判胜
本功能模块主要对游戏的胜负进行判定.
1.由玩家输入棋子所在位置,由系统判定胜负,若胜,则游戏结束;否则,游戏继续.
2.对胜负判定需先确定一个中心棋子位置.
3.由一个中心棋子可以引出四条线形成五子连一线.
4.判定过程中注意越界现象.
概要设计
1.五子棋的判胜条件即为5个相同的棋子连在一条线上.
2.以一个棋子为中心,有4条线可以形成五子连线.如图所示:(描红的为中心棋子)
3.中心棋子即为最后一步所下棋子.
4.以1线为例,从中心棋子出发(设为白子),先向左进行判断,若棋子为白子,则计数器加1(初始值为1),否则(为黑子或无子),则返回中心棋子,向右进行判断,进行相同操作.
5. 1线判定结束后,若计数器为5,则判白子胜,否则,计数器归1,再从2,3,4线按顺序进行判定.
6.棋盘的每个坐标有3个状态,分别为无子(标记为0),白子(标记为1),黑子(标记为2),对棋盘点进行判断时,只需判定其所在状态即可。

7.若棋盘下满,仍未有五子连线,则判和。

图3 五子棋判胜流程图
4.软件实现与测试
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。

执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。

软件测试的目的:
(1)测试并不仅仅是为了找出错误。

通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进;
(2)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性;
(3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。

5、运行结果
5.1 首先进入游戏界面,然后可以选择难度
玩家可以选择人人对战可和人机对战两个模式
玩家开始游戏
当白棋快赢的时候或手勿玩家想回步的时候可以选择悔棋(但只能悔棋一步)
悔棋后到上一步
6.总结
经过系统的设计与实现,一个能够实现人机对战和人人对战的局域网五子棋系统基本完成。

总结全文的工作,具体概括如下:
对游戏逻辑模块进行优化,进一步提高时间性能和可扩展性,以适应将来新的需求和变化。

此外电脑落棋算法也有待进一步改进,这里采用的是循环遍历算法。

7.附录7.1源代码。

相关主题