收藏 分享(赏)

网络棋牌对战系统总体设计报告.doc

上传人:weiwoduzun 文档编号:1786180 上传时间:2018-08-23 格式:DOC 页数:9 大小:53KB
下载 相关 举报
网络棋牌对战系统总体设计报告.doc_第1页
第1页 / 共9页
网络棋牌对战系统总体设计报告.doc_第2页
第2页 / 共9页
网络棋牌对战系统总体设计报告.doc_第3页
第3页 / 共9页
网络棋牌对战系统总体设计报告.doc_第4页
第4页 / 共9页
网络棋牌对战系统总体设计报告.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、网络棋牌对战系统总体设计报告组长:钟锐组员:陆胜,金奔,刘友谊,孟宇,潘宽伟莫鑫群,卓如东,吴挺,叶承昕, 和善一,设计目标本设计从全局上对事实开发的网络棋牌对战系统进行描述,构建起基本框架和逻辑结构,以为后续详细设计工作提供指导和设计依据。本系统使用 C+语言和 Windows 编程开发,仅供教学使用。软件设计根据所需功能进行逐步分解,细化之后得出总体设计的模块划分以及接口设计部分。便于实际开发过程中实现模块发开发和分层式结构,保证软件可靠性健壮性,力图实现同类对战系统中的相同功能。实现的对战系统客户端软件负责接收和识别用户的所有操作,以及简单的数据计算和规则判断,图形显示等功能。采用分层式

2、软件结构和面向对象的设计思路,在设计时将软件模型和功能进行抽象,并采用与之对应的对象进行代表。针对软件的数据模型,设计出处理数据的功能模型和与之相对的顺序式行为模型。因为数据模型在之前的设计文档中已经实现,在本报告中不再重复设计,本报告的重点集中在由数据模型导出的与之对应的软件功能模型,包括软件的结构及组成和各模块的职责功能划分,及其间的接口设计。二,需求概述系统采用 C/S 式客户端服务器端软件模式,整体上分为客户端模块和服务器端模块。服务器作为接受用户连接,登陆,进入游戏房间和游戏实际数据信息的交换中心。要求能够起到接受从客户端所在网络发送过来的数据包,识别消息类型和基本的数据分析和处理,

3、再将其处理结果分发到指定 IP 地址的客户端程序中。客户端则作为接收用户所有操作和基本数据处理的核心,负责与用户的图形化界面交流和作为基本的消息收发起始点和终止点进行消息收发。客户端还需进行对用户操作的合理性进行判断,并且将其封装成消息形式的数据包裹传递给服务器端,再等待服务器端的回传包裹,分析其中的回传消息并作出相应的处理,最后在面向用户的图形界面上显示出来。系统力图实现同类游戏软件中的相同功能需求,对系统的非功能性需求,因为本系统仅用于教学研究实用不做严格要求,因此本设计力求简洁直观有效。对于系统内部的性能优化以及系统资源的充分利用等方面不做过多要求。在保证功能正确性的前提下,只需要搭建起

4、开放式的平台,性能方面的改进可在以后的系统完善设计中进一步完成。三,解释说明本系统的图形显示部分设计,力求简单有效。因此设计上考虑到可实现性,使用较为简单的方案实现,即调用 WinGDI 的窗口显示有关 API,并将要显示的对象逐个区分,将不同的对象封装在不同的模块中。模块提供可调用的函数作为供系统内部其他部分调用的接口,以此完成显示图形图像部分的功能需求。基于这一点,显示部分的模块都只是原WinGDI 的简单封装。四,软件模块划分1,牌类管理和计算部分:(1.1)牌绘制模块输入:用户当前持牌和其他玩家的余牌数。输出:无模块说明:根据当前玩家的持牌情况,调用图形显示部分的单张牌绘制模块将牌按照

5、持牌顺序一张一张绘制出来。(1.2)根据花色大小排序模块输入:需要排序的牌组输出:已经排好序的牌组模块说明:根据牌面值包括花色在内的大小比较进行排序。(1.3)根据数字大小排序模块输入:需要排序的牌组输出:已经排好序的牌组模块说明:根据牌面值不包括花色在内的牌面数值大小比较进行排序。(1.4)出牌处理模块输入:出牌玩家序号输出:无模块说明:判断出牌玩家相对于当前玩家所在的位置。重新设置玩家所看到出牌者的牌组,若是自己出牌,则重新设置持牌,删除已出牌组,并将当前桌面上已出牌组更新为本轮所出牌组。(1.5)PASS 处理模块输入:PASS 玩家序号输出:无模块说明:判断 PASS 玩家相对于当前玩

6、家所在的位置。重新设置 PASS 玩家的当前桌面上已出牌组为空,并更新玩家状态。(1.6)结果计算模块输入:玩家结束数据输出:无模块说明:调用显示模块生成显示窗口,将玩家本局输赢情况以及所得分数显示。(1.7)添加玩家模块输入:增加的玩家数据输出:无模块说明:维护新加玩家的数据,并将该玩家插入本局玩家序列中(1.8)查找玩家模块输入:需要查找的玩家序号输出:该玩家的信息数据模块说明:根据玩家序号,从玩家组中找到该玩家并输出该玩家的数据信息。(1.9)玩家出牌判断模块输入:玩家所选择的牌组输出:是否允许出牌的判断结果模块说明:根据选择牌组的张数,先对牌组进行排序。再根据不同的情况计算出当前所选牌

7、组的等效大小值,与桌面上牌组进行比较,若大于当前牌组则允许出牌,否则不允许出牌。(1.10)初始化模块输入:当前玩家分发到的牌输出:无模块说明:根据玩家分到的牌组,进行游戏初始化。调用显示部分单张牌显示模块,载入相应的牌位图文件,并计算显示位置一张一张显示,然后重设其他玩家的牌组所在矩阵,显示其他玩家所持牌的背面图。(1.11)加载资源模块输入:无输出:无模块说明:在游戏开始的时候,加载需要的位图以及动画文件进入游戏内存,同时加载玩家头像。(1.12)鼠标点击处理模块输入:鼠标点击事件参数输出:无模块说明:判断当前是否是玩家选择出牌的时间,若是则对单击做出响应。将鼠标单击选中的牌组加入已选牌组

8、中,若牌组已被选中则返回至手持牌组。调用显示部分模块,绘制选中牌面的移动。(1.13)下局初始化模块输入:无输出:无模块说明:清空所有相关牌组,重置所有玩家所持牌组的大小,并重新设置所有玩家状态。2,游戏核心事务处理部分:(2.1)窗口初始化模块输入:无输出:无模块说明:初始化显示给用户的窗口,设置各种窗口参数,并创建窗口。载入相关图片资源等。(2.2)窗口消息处理模块输入:窗口句柄,消息参数,附加参数输出:处理结果模块说明:游戏主窗口的消息处理派分模块。负责识别消息类型,根据不同的类型解析收到的消息参数,并针对个种参数判断应当执行何种操作。本模块负责接收处理的消息类型有:连接消息,命令消息。

9、命令消息包括进入房间按钮按下消息,登陆按钮按下消息,开始按钮按下消息,开始按钮按下消息,PASS 按钮按下消息,出牌按钮按下消息,鼠标移动消息和窗口销毁消息。(2.3)窗口绘制模块输入:无输出:无模块说明:调用显示模块的相关函数完成窗口绘制。通过现有数据判断当前窗口和玩家状态,并根据不同状态向绘制对象添加所需绘制的元素。(2.4)网络消息处理模块输入:网络传来的消息包,附加的消息参数输出:处理结果模块说明:先从消息队列上获取消息,在根据消息类型进行相应的处理判断。本模块负责接收处理的消息类型有:大厅里添加用户的消息,登陆时收到大厅中其他用户的消息,玩家进入当前房间的消息,本玩家登陆大厅时的接收

10、消息,在房间中游戏开的消息,游戏过程中 PASS 的消息,游戏准备的消息,收到所有牌的消息,有人出牌的消息,游戏结束清算的消息。模块负责识别以上的消息类型并针对不同的消息进行粗略的处理,如果需要更多的支持则调用负责相应功能的其他模块。(2.5)初始化位图模块输入:无输出:无模块说明:游戏开始时初始化游戏所需要加载的位图文件。包括各种按钮的位图文件,以及游戏大厅的位图和牌的位图。(2.6)帧数计算模块输入:无输出:无模块说明:以每隔 1 秒的间隔,通过静态局部变量计算游戏显示画面的帧数。并在帧数加一的时候调用窗口绘制函数绘制下一帧。3,房间处理部分:(3.1)进入房间模块输入:进入房间编号,进入

11、位置,进入玩家编号输出:无模块说明:负责处理玩家从大厅中选择房间和位置然后进入的操作,将该房间的相应位置置满,并加载玩家头像到该位置上,从空闲玩家列表中去除进入房间的玩家。(3.2)离开房间模块输入:玩家离开的房间好,玩家编号输出:无模块说明:处理一个玩家里开某房间的操作,负责将该玩家从房间玩家显示中移除。加入到大厅中,同时将结果发送给相应的其他玩家。(3.3)房间绘制模块输入:房间中玩家的头像输出:无模块说明:根据各房间中所在玩家的姓名和头像对大厅中各房间进行绘制。包括判断是否游戏开始,以及各玩家的位置。若该位置上没有任何玩家,则绘制进入房间的按钮。(3.4)房间初始化模块输入:无输出:无模

12、块说明:根据每个房间的私有信息进行房间绘制,载入位图后,根据每个位置的有无在相应的区域加载按钮和图片。4,图形显示部分:(4.1)创建显示模块输入:客户端窗口句柄输出:无模块说明:初始化窗口显示,创建显示设备上下文,设置绘制区域等参数。(4.2)绘制图像模块输入:打开位图句柄,基本坐标,颜色数据输出:无模块说明:将指定的图片绘制至指定坐标的模块。读取参数后使用 WinGDI 的功能,将图片对象添加至设备对象的上下文中,在调用系统功能完成绘制。(4.3)绘制图片模块输入:图片对象输出:无模块说明:和绘制图像模块相似,区别在于输入对象是代表图片的自定义对象。通过读取图片的参数,再完成该对象的显示绘

13、制。(4.4)动画绘制模块输入:动画对象输出:无模块说明:将动画对象的参数进行解析,并添加至绘制设备上下文中进行绘制。需要设置动画对像的帧信息,设置绘制区域等。(4.5)按钮对象模块输入:按钮对象输出:无模块说明:解析按钮对象的参数,调用图片绘制模块进行按钮的绘制。(4.6)牌对象绘制输入:牌对象输出:无模块说明:解析牌对象的参数,调用图片绘制模块进行按钮的绘制。(4.7)载入位图模块输入:位图位置输出:位图句柄模块说明:将指定位置的位图文件打开,并返回其句柄。这一模块是图形显示部分的基础,其他模块大量地调用了本模块。(4.8)设置动画模块输入:动画帧数信息,可见信息输出:无模块说明:设置动画

14、对象的属性和参数。通过给定的动画信息,包括最大帧数,开始帧序号,结束帧序号,播放速度,是否循环,是否可见等信息将指定的动画的对象进行设置。(4.9)按钮指向模块输入:鼠标指向按钮时的消息参数输出:无模块说明:本模块负责更新按钮对象在鼠标指到按钮之上时的显示设置。进行按钮是否可见,是否可按的判断再对按钮的图片进行更新,以此显示按钮选中的效果。(4.10)按钮按下模块输入:鼠标按下按钮时的消息参数输出:无模块说明:判断按钮是否可被按下,是否可见。然后针对按下操作,更新按钮的显示区域,替换图片以显示按钮按下的效果。(4.11)按钮弹起模块输入:鼠标结束按下时的消息参数输出:无模块说明:按钮按下结束时

15、,本模块负责更新按钮显示图片。进行用户操作的判断以及发送按下结束的消息给相关窗口和设备。(4.12)按钮设置模块输入:按钮需要设置状态输出:无模块说明:根据传入参数的要求,设置指定按钮是否可以被按下。(4.13)牌按下模块输入:鼠标单击牌时的消息参数输出:无模块说明:解析鼠标按下的消息参数,判断击中的牌面是否已经被选中,若被选中则进行向下偏移,否则进行向上偏移,以此显示选中牌面效果。5,网络传输部分(5.1)开始连接模块输入:窗口句柄,连接 IP 地址输出:无模块说明:初始化网络环境以及套接字的使用环境,根据用户指定的 IP 地址进行尝试连接。(5.2)套接字命令解析模块输入:窗口句柄,接收消

16、息及其参数输出:无模块说明:本模块负责解析自套接字收到的消息。判断消息类型,并根据其需求进行简单的操作,如果需要进一步的功能支持则调用其它模块的相关功能。本模块负责处理的消息类型有:连接消息,读取消息,写入消息,关闭消息。(5.3)发送数据模块输入:发送的数据缓冲区,发送数据长度输出:发送结果模块说明:根据用户要求将缓冲区包含的数据发送出去。使用连接至服务器端的套接字进行数据发送,循环判断已发送数据是否达到需要发送的数据长度,直至发送完毕。(5.4)释放连接模块输入:无输出:无模块说明:释放连接至服务器端的套接字,清空网络环境相关数据结构以及参数,防止留下多余垃圾数据,同时通知网络段用户下线。

17、五,接口设计部分根据以上的模块划分,就可以初步导出本系统内部各部分之间的接口设计情况。设计原则如下:将每一个模块所提供的功能封装至一个可供其他模块调用的函数中,根据模块需要的输入设计函数的参数列表,根据模块需要的输出设置函数返回类型。同时某些参数也可作为引用的返回参数使用。如此一来模块间的交互只需要调用其它模块的功能函数即可,函数声明不可改变。在模块需要扩展功能时,模块改变函数内部的具体实现过程,或者在该功能函数内再调整调用其它工具函数即可改变函数行为。以此可以保证系统其他部分模块和部件不受个别模块功能扩展的影响。详细的接口设计,包括各模块的功能函数名称及参数列表,返回值类型等将进一步在详细设

18、计报告中进行完善。由于本设计报告是总体设计报告,因此在导出系统整体模块结构的基础上即可得知系统的大致接口设计情况,因此在此不再详细列出各模块的接口列表。除以上描述的通用功能的模块接口之外,有提供特殊的多功能调用的模块,如套接字命令解析模块,将采用消息机制作为模块的接口即通过定义不同的需求所代表的消息,再通过发送与所需服务对应的消息到模块关联的窗口处,调用该模块以实现不同的需求。注入此类的模块其所接受的消息类型都已在模块划分部分中详细说明,在后续的详细设计工作中将以此作为参照完成消息接口的设计。六,容错设计以及测试计划本系统要求在远距离 Internet 网络传输的环境下实现信息的无错误传输。包

19、括玩家信息,游戏过程信息,游戏结果信息在内的所有经传输信息都实现无错传输。为实现这一目标特设计一下测试计划。测试方法:由一台在 Internet 上有固定 IP 地址的主机作为服务器主机,再有参与测试人员连接至该主机进行游戏,针对不同的时间进行不同数量的连接和游戏测试,测试人员负责记录本机上的游戏过程和发送之前的数据,再通过服务器记录数据,最后送达其他客户端的同时由其他测试人员收集接收到的数据。三组数据进行比对以此得出网络传输部分的数据正确性结论。对于软件其他模块的功能型验证,采用黑盒测试方法。指定输入模块的数据,然后观察模块调用产生的效果,软件编码过程为自底向上过程,因此黑盒测试将会使用到之

20、前模块的部分,在黑盒测试中,采用边界值,错误推断以及等价类划分等方法保证测试结果的正确性。在黑盒测试出现错误之后,再让原模块的设计编写人员进行错误模块的白盒测试,使用逻辑覆盖和循环覆盖的方法查找到错误产生的源头,纠正错误。七,进度计划因为本项目大量涉及到了之前所学课程当中未教的知识,需要开发人员有一定的学习时间,作为项目管理设计计划如下:前期知识准备:2 个月(包括 Windows 编程基础知识,网络 API 运用,图形部分知识)实际开发阶段:3 个月(从底层系统的模块自底向上开发,高层模块调用底层模块实现宫能需求,逐步向上)测试:3-4 个月(测试人员与开发人员同时开始工作,在开发人员完成低层模块开发工作之后,测试人员即可开始针对单独模块的测试工作,依旧自底向上完成测试)验收与交付调整:1 个月(最后根据测试所得结果,进行交付前修改调试,完成之后本项目的开发阶段即完成)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 研究报告 > 教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报