欢迎来到天天文库
浏览记录
ID:10913754
大小:660.50 KB
页数:22页
时间:2018-07-08
《概要设计-基于windows系统的斗地主游戏的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
基于Windows系统的斗地主游戏的设计与实现概要设计总页数22正文19附录无生效日期2013-12-18编制批准22 南昌航空大学东软班概要设计修改履历修改编号日期修改人版本号修改内容1VER0.1.0初始做成2322 南昌航空大学东软班概要设计目录1文档概述41.1文档目的和范围41.2术语/缩略语41.3参考文档42模块概述42.1模块功能定义52.2模块结构62.3模块动作时序73接口说明83.1数据结构定义83.2函数113.2.1模块间接口函数113.2.2模块内接口函数1722 南昌航空大学东软班概要设计1文档概述1.1文档目的和范围该项目模块是对基于Windows系统的斗地主游戏的服务器端模块的概要设计描述,主要是描述了本模块与其他模块的接口函数和内部函数的定义,与其模块的结构图和本模块的功能描述与时序图的记述,并为后期详细设计、测试提供依据。1.2术语/缩略语序号术语/缩略语说明1MFCMicrosoftFoundationClasses,微软基础类2DirectXDirecteXtension,简称DX,是由微软公司创建的多媒体编程接口1.3参考文档序号文档名作者时间版本1VisualC++游戏编程基础荣钦科技2005.5第一版2VisualC++范例大全孙皓2模块概述服务器端模块主要是创建服务器,实现登录、接收客户端数据、传送牌数据结构给地主、决定地主、判断玩家出牌的正确性、判断结束并判定胜负、积分计算等。客户端模块主要是连接服务器,接收牌、决定要不要当地主、决定要出的牌等。DirectX显示模块主要是实现画牌、发牌、移动牌、画各个玩家出牌、移动各个玩家新出的牌到已出牌区。DirectX输入模块主要是完成键盘的初始化、鼠标的初始化。22 南昌航空大学东软班概要设计网络连接模块主要是完成Socket通信功能,主要有创建socket、绑定、监听、接受客户信息、连接、发送数据、接收数据。1.1模块功能定义序号功能点功能点详细内容1创建服务器为斗地主游戏提供一个网络环境。2用户登录用户自己的账户(由任意大于等于1个且不超过6个的字符组成)当帐户没有输入就进入游戏时提示“您还没有输入名字,请输入您的名字”,当输入的名字大于6个字符时,超过6个字符的不再显示3发牌一副牌54张,一人17张,留3张做底牌,在确定地主之前玩家不能看底牌。并且牌型按照牌的大小进行排序。4随机生成初始在发玩牌后,服务器先随机产生一名初始地主。先由该地主决定要不要当地主。5决定地主在初始地主产生后,初始地主先决定要不要当地主,如果当地主,则向其他两位玩家发送要当地主消息,如选择不当地主则由下一位玩家选择,若三位玩家都选择不当地主,则最终由初始产生的随机地主当地主。6出牌将三张底牌交给地主,并亮出底牌让所有人都能看到。地主首先出牌,然后按逆时针顺序依次出牌,轮到用户跟牌时,用户可以选择“不出”或出比上一个玩家大的牌。某一玩家出完牌时结束本盘。7判断结束并判定胜负任意一家出完牌后结束游戏,若是地主先出完牌则地主胜,否则另外两家胜。8积分计算每个用户最初都有50积分,每局不加倍的情况下为1个积分,最后积分=1*倍数,若没加倍*19音乐提示在游戏进行时播放相应的背景音乐。10退出当没有积分或者不愿意玩时,退出游戏。22 南昌航空大学东软班概要设计1.1模块结构图1功能模块图22 南昌航空大学东软班概要设计图2类图类名模块类型概要说明CGame类游戏主体框架类CDlg_Start类游戏登陆开始类CLink类网络通信类CCardPos类扑克的位置类CCardsMap类扑克牌布局地图结构类CDrawCardsEngine类画牌引擎类CDrawItemEngine类画整个游戏界面引擎类CMyDirectDraw类加载图像引擎类CMyDirectInput类加载设备接口类CCard类纸牌类CPlayingCards类出牌类CServerGame类服务器端游戏对战类CClientGame类客户端游戏对战类CCardsType类牌型数据结构类CPlayerInfo类玩家信息类22 南昌航空大学东软班概要设计1.1模块动作时序图3模块动作时序图2接口说明2.1数据结构定义//主窗口句柄externHWNDhWnd;classCMainFrame;//主窗口类指针;设为全局变量便于各个类访问其方法externCMainFrame*pCMainFrame;//关于Direct设备的类22 南昌航空大学东软班概要设计//DirectInput设备接口指针classCMyDirectInput;externCMyDirectInput*pInput;//DirectDraw设备接口指针classCMyDirectDraw;externCMyDirectDraw*pDraw;externLPDIRECTDRAWSURFACE7lpddsprimary;//主表面externLPDIRECTDRAWSURFACE7lpddsback;//后缓冲表面externLPDIRECTDRAWSURFACE7lpddsbg_Game;//存放游戏界面的离屏表面//主窗口句柄HWNDhWnd;//主窗口类指针;设为全局变量便于各个类访问其方法CMainFrame*pCMainFrame;//DirectDraw设备对象指针CMyDirectInput*pInput;CMyDirectDraw*pDraw;LPDIRECTDRAWSURFACE7lpddsprimary;//ddprimarysurfaceLPDIRECTDRAWSURFACE7lpddsback;//ddbacksurfaceLPDIRECTDRAWSURFACE7lpddsbg_Game;//离屏表面//游戏主体框架类指针CGame*pGame;//54张扑克CCardg_cAllCards[54];//存储玩家信息的类CPlayerInfo*pCenterPlayer;CPlayerInfo*pLeftPlayer;22 南昌航空大学东软班概要设计CPlayerInfo*pRightPlayer;CPlayingCards*pLeftCards;//左边玩家的牌对象CPlayingCards*pCenterCards;//主机玩家的牌对象CPlayingCards*pRightCards;//右边玩家的牌对象//关于其他精灵的绘制引擎CDrawItemEngine*pDrawItem;//关于扑克绘制的引擎CDrawCardsEngine*pDrawCards;//游戏牌面坐标系统CCardsMap*pCardsMap;//网络设备CLink*pServerLink1;//连接客户1CLink*pServerLink2;//连接客户2CLink*pClientLink;//客户端1//位置坐标intScreen_Width=1024;intScreen_Height=768;//屏幕长,宽intCards_Width=82;intCards_Height=114;//扑克长宽intCenter_x0=350;intCenter_y0=620;//中间玩家未出的牌intCenter_x1=230;intCenter_y1=470;//中间玩家已经出过的牌intCenter_x2=330;intCenter_y2=340;//中间玩家刚出的牌intLeft_x0=35;intLeft_y0=140;//左边玩家未出的牌intLeft_x1=140;intLeft_y1=30;//左边玩家已经出过的牌intLeft_x2=240;intLeft_y2=65;//左边玩家刚出的牌22 南昌航空大学东软班概要设计intRight_x0=905;intRight_y0=140;//右边玩家未出的牌intRight_x1=800;intRight_y1=30;//右边玩家已经出过的牌intRight_x2=700;intRight_y2=65;//右边玩家刚出的牌//三张显示的地主牌;intLord_Card1_x=379;intLord_Card1_y=30;intLord_Card2_x=471;intLord_Card2_y=30;intLord_Card3_x=563;intLord_Card3_y=30;intCard_x=471;intCard_y=190;//发牌的起始位置intCard_Distance0=18;//左,右玩家未出牌和中间玩家已出牌的间距intCard_Distance1=23;//左,右玩家已出牌的间距intCard_Distance2=25;//中间玩家未出牌和刚出的牌的间距intCard_Up=20;//中间扑克选择后突出的高度typedefunsignedshortUSHORT;//类型定义typedefunsignedshortWORD;typedefunsignedcharUCHAR;typedefunsignedcharBYTE;1.1函数1.1.1模块间接口函数1.1.1.1类CPLayingCards3.2.1.1.1CompareChoose函数名CompareChoose文件名../Playing_Cards.cpp功能概要比较大小后决定不要或者出牌记述形式intCompareChoose(CCardsType&);22 南昌航空大学东软班概要设计参数类型变量名I/O说明CCardsTypeCard_Type--返回值类型int说明值1出牌值0过牌详细说明初始化相关参数使用注意事项无3.2.1.1.2DirectChoose函数名DirectChoose文件名../Playing_Card.cpp功能概要直接选择出牌记述形式intDirectChoose();参数类型变量名I/O说明void---返回值类型int说明值--详细说明直接选择出牌使用注意事项无22 南昌航空大学东软班概要设计3.2.1.1.3CheckChooseing函数名CheckChoosing文件名../Playing_Card.cpp功能概要检查出牌的逻辑合法性记述形式intCheckChoosing()参数类型变量名I/O说明void---返回值类型int说明值1合法值0不合法详细说明检查出牌的逻辑合法性使用注意事项无3.2.1.1.4CleanUp函数名CleanUp文件名../Playing_Card.cpp功能概要整理牌数据结构记述形式intCleanUp()参数类型变量名I/O说明void--玩家帐号返回值类型int说明值--详细说明整理牌数据结构22 南昌航空大学东软班概要设计使用注意事项无3.2.1.1.5AccountCardsValue函数名AccountCardsValue文件名../Playing_Card.cpp功能概要计算牌值记述形式intAccountCardsValue();参数类型变量名I/O说明void---返回值类型int说明值--详细说明计算牌值使用注意事项无3.2.1.1.6AI_Patch1函数名AI_Patch1文件名../Playing_Card.cpp功能概要工人智能补丁记述形式BOOLAI_Patch1();参数类型变量名I/O说明void---22 南昌航空大学东软班概要设计返回值类型BOOL说明---详细说明工人智能补丁使用注意事项无1.1.1.1类CMyDirectInput3.2.1.2.1IsLButtonDown函数名IsLButtonDown文件名../My_DirectInput.cpp功能概要检查是否在CRect中有鼠标左键按下记述形式intIsLButtonDown(constCRect&);参数类型变量名I/O说明constCRect&rect--返回值类型int说明值1有鼠标左键按下值0无鼠标左键按下详细说明检查是否在CRect中有鼠标左键按下,如果有返回1,否则返回0使用注意事项无22 南昌航空大学东软班概要设计3.2.1.2.2ISRButtonDown函数名IsRButtonDown文件名../My_DirectInput.cpp功能概要检查是否在CRect中有鼠标左键按下记述形式intIsRButtonDown(constCRect&);参数类型变量名I/O说明constCRect&rect--返回值类型int说明值1有鼠标左键按下值0无鼠标左键按下详细说明检查是否在CRect中有鼠标左键按下,如果有返回1,否则返回0使用注意事项无1.1.1.1类CGame3.2.1.3.1CompareCards函数名CompareCards文件名../Game.cpp功能概要比较当前牌是否为合法记述形式intCompareCards();参数类型变量名I/O说明void--座位号返回值类型int说明值1合法22 南昌航空大学东软班概要设计值0不合法详细说明比较当前牌是否为合法,合法返回1,不合法返回0使用注意事项无3.2.1.3.1AccountScore函数名AccountScore文件名../Game.cpp功能概要计算玩家得分信息记述形式voidAccountScore();参数类型变量名I/O说明void--座位号返回值类型void说明值--详细说明在游戏结束时计算三位玩家的得分信息并显示得分情况使用注意事项无1.1.1.1类CDrawCardsEngine3.2.1.4.1Dealing函数名Dealing文件名../Draw_Card_Engine.cpp功能概要发牌记述形式intDealing()22 南昌航空大学东软班概要设计参数类型变量名I/O说明void---返回值类型int说明值--详细说明发牌使用注意事项无1.1.1模块内接口函数1.1.1.1类CDlg_Start3.2.2.1.1Server_Login函数名Server_Login文件名../Dlg_Start.cpp功能概要服务器端接收函数记述形式staticDWORDWINAPIServer_Login(LPVOIDpParam);参数类型变量名I/O说明LPVOIDpParam--返回值类型DWORD说明值--详细说明服务器端接收函数使用注意事项无22 南昌航空大学东软班概要设计3.2.2.1.2Client_Login函数名Client_Login文件名.../Dlg_Start.cpp功能概要客户端接收函数记述形式staticDWORDWINAPIClient_Login(LPVOIDpParam);参数类型变量名I/O说明LPVIODpParam--返回值类型DWORD说明值--详细说明客户端接收函数使用注意事项无1.1.1.1类CServerGame3.2.2.2.1SentCards函数名SentCards文件名.../Server_Game.cpp功能概要传送牌数据结构给两个客户(服务器独有的函数)记述形式intSentCards(void);参数类型变量名I/O说明void---返回值类型int说明22 南昌航空大学东软班概要设计值--详细说明传送牌数据结构给两个客户(服务器独有的函数)使用注意事项无3.2.2.2.2DecideLord函数名DecideLord文件名.../Server_Game.cpp功能概要决定地主记述形式intDecideLord(void);参数类型变量名I/O说明void---返回值类型int说明值--详细说明决定地主使用注意事项无3.2.2.2.3LeftDoing函数名LeftDoing文件名.../Server_Game.cpp功能概要左边玩家思考,并决定要出的牌记述形式virtualintLeftDoing();参数类型变量名I/O说明22 南昌航空大学东软班概要设计void---返回值类型int说明值--详细说明左边玩家思考,并决定要出的牌使用注意事项无3.2.2.2.4CenterDoing函数名CenterDoing文件名.../Server_Game.cpp功能概要本机玩家思考,并决定要出的牌记述形式virtualintCenterDoing();参数类型变量名I/O说明void---返回值类型int说明值--详细说明本家玩家思考,并决定要出的牌使用注意事项无3.2.2.2.5RightDoing函数名RightDoing文件名.../Server_Game.cpp功能概要右边玩家思考,并决定要出的牌记述形式virtualintRightDoing();22 南昌航空大学东软班概要设计参数类型变量名I/O说明void---返回值类型int说明值--详细说明右边玩家思考,并决定要出的牌使用注意事项无3.2.2.2.6Run函数名Run文件名.../Server_Game.cpp功能概要整个游戏过程的中枢记述形式virtualintRun();参数类型变量名I/O说明void---返回值类型int说明值--详细说明整个游戏过程的中枢使用注意事项无22
此文档下载收益归作者所有
举报原因
联系方式
详细说明
内容无法转码请点击此处