概要设计基于Windows系统的斗地主游戏的设计与实现.doc

上传人:仙人指路1688 文档编号:2390264 上传时间:2023-02-17 格式:DOC 页数:22 大小:580KB
返回 下载 相关 举报
概要设计基于Windows系统的斗地主游戏的设计与实现.doc_第1页
第1页 / 共22页
概要设计基于Windows系统的斗地主游戏的设计与实现.doc_第2页
第2页 / 共22页
概要设计基于Windows系统的斗地主游戏的设计与实现.doc_第3页
第3页 / 共22页
概要设计基于Windows系统的斗地主游戏的设计与实现.doc_第4页
第4页 / 共22页
概要设计基于Windows系统的斗地主游戏的设计与实现.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《概要设计基于Windows系统的斗地主游戏的设计与实现.doc》由会员分享,可在线阅读,更多相关《概要设计基于Windows系统的斗地主游戏的设计与实现.doc(22页珍藏版)》请在三一办公上搜索。

1、 基于Windows系统的斗地主游戏的设计与实现概要设计总页数22正文19附录无生效日期2013-12-18编制批准修 改 履 历修改编号日期修改人版本号修改内容1VER0.1.0初始做成23目 录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模块内接口函数171 文档概述1.1 文档目的和范围该项目模块是对基于Windows系统的斗地主游戏的服务器端模块的概要设计描述,主要是描述了本模块与其他模块的接口函数和内部函数的

2、定义,与其模块的结构图和本模块的功能描述与时序图的记述,并为后期详细设计、测试提供依据。1.2 术语/缩略语序号术语/缩略语说明1MFCMicrosoft Foundation Classes,微软基础类2DirectXDirect eXtension,简称DX,是由微软公司创建的多媒体编程接口1.3 参考文档序号文档名作者时间版本1Visual C+游戏编程基础荣钦科技2005.5第一版2Visual C+范例大全孙皓2 模块概述服务器端模块主要是创建服务器,实现登录、接收客户端数据、传送牌数据结构给地主、决定地主、判断玩家出牌的正确性、判断结束并判定胜负、积分计算等。客户端模块主要是连接服

3、务器,接收牌、决定要不要当地主、决定要出的牌等。DirectX显示模块主要是实现画牌、发牌、移动牌、画各个玩家出牌、移动各个玩家新出的牌到已出牌区。DirectX输入模块主要是完成键盘的初始化、鼠标的初始化。网络连接模块主要是完成Socket通信功能,主要有创建socket、绑定、监听、接受客户信息、连接、发送数据、接收数据。2.1 模块功能定义序号功能点功能点详细内容1创建服务器为斗地主游戏提供一个网络环境。2用户登录用户自己的账户(由任意大于等于1个且不超过6个的字符组成)当帐户没有输入就进入游戏时提示“您还没有输入名字,请输入您的名字”,当输入的名字大于6个字符时,超过6个字符的不再显示

4、3发牌一副牌 54 张,一人 17 张,留 3 张做底牌,在确定地主之前玩家不能看底牌。并且牌型按照牌的大小进行排序。4随机生成初始在发玩牌后,服务器先随机产生一名初始地主。先由该地主决定要不要当地主。5决定地主在初始地主产生后,初始地主先决定要不要当地主,如果当地主,则向其他两位玩家发送要当地主消息,如选择不当地主则由下一位玩家选择,若三位玩家都选择不当地主,则最终由初始产生的随机地主当地主。6出牌将三张底牌交给地主,并亮出底牌让所有人都能看到。地主首先出牌,然后按逆时针顺序依次出牌,轮到用户跟牌时,用户可以选择 “ 不出 ” 或出比上一个玩家大的牌。某一玩家出完牌时结束本盘。7判断结束并判

5、定胜负任意一家出完牌后结束游戏,若是地主先出完牌则地主胜,否则另外两家胜。8积分计算每个用户最初都有50积分,每局不加倍的情况下为1个积分,最后积分=1*倍数,若没加倍*19音乐提示在游戏进行时播放相应的背景音乐。10退出当没有积分或者不愿意玩时,退出游戏。2.2 模块结构图 1 功能模块图图 2 类图类名模块类型概要说明CGame类游戏主体框架类CDlg_Start类游戏登陆开始类CLink类网络通信类CCardPos类扑克的位置类CCardsMap类扑克牌布局地图结构类CDrawCardsEngine类画牌引擎类CDrawItemEngine类画整个游戏界面引擎类CMyDirectDraw

6、类加载图像引擎类CMyDirectInput类加载设备接口类CCard类纸牌类CPlayingCards类出牌类CServerGame类服务器端游戏对战类CClientGame类客户端游戏对战类CCardsType类牌型数据结构类CPlayerInfo类玩家信息类2.3 模块动作时序图 3 模块动作时序图3 接口说明3.1 数据结构定义/主窗口句柄extern HWND hWnd;class CMainFrame;/主窗口类指针;设为全局变量便于各个类访问其方法extern CMainFrame* pCMainFrame;/关于Direct设备的类/DirectInput设备接口指针class

7、 CMyDirectInput;extern CMyDirectInput* pInput;/DirectDraw设备接口指针class CMyDirectDraw;extern CMyDirectDraw* pDraw;extern LPDIRECTDRAWSURFACE7 lpddsprimary; / 主表面extern LPDIRECTDRAWSURFACE7 lpddsback; /后缓冲表面extern LPDIRECTDRAWSURFACE7 lpddsbg_Game; /存放游戏界面的离屏表面/主窗口句柄HWND hWnd;/主窗口类指针;设为全局变量便于各个类访问其方法CMa

8、inFrame* pCMainFrame;/DirectDraw设备对象指针CMyDirectInput* pInput;CMyDirectDraw* pDraw;LPDIRECTDRAWSURFACE7 lpddsprimary;/ dd primary surfaceLPDIRECTDRAWSURFACE7 lpddsback;/ dd back surfaceLPDIRECTDRAWSURFACE7 lpddsbg_Game;/离屏表面/游戏主体框架类指针CGame* pGame;/54张扑克CCard g_cAllCards54;/存储玩家信息的类CPlayerInfo* pCente

9、rPlayer;CPlayerInfo* pLeftPlayer;CPlayerInfo* pRightPlayer;CPlayingCards* pLeftCards; /左边玩家的牌对象CPlayingCards* pCenterCards; /主机玩家的牌对象CPlayingCards* pRightCards; /右边玩家的牌对象/关于其他精灵的绘制引擎CDrawItemEngine* pDrawItem;/关于扑克绘制的引擎CDrawCardsEngine* pDrawCards;/游戏牌面坐标系统CCardsMap* pCardsMap;/网络设备CLink* pServerLin

10、k1; /连接客户1CLink* pServerLink2; /连接客户2CLink* pClientLink; /客户端1/位置坐标int Screen_Width = 1024;int Screen_Height = 768; /屏幕长,宽int Cards_Width = 82;int Cards_Height = 114; /扑克长宽intCenter_x0 = 350; int Center_y0 = 620; /中间玩家未出的牌intCenter_x1 = 230; int Center_y1 = 470; /中间玩家已经出过的牌intCenter_x2 = 330; int Ce

11、nter_y2 = 340; /中间玩家刚出的牌intLeft_x0 = 35; int Left_y0 = 140;/左边玩家未出的牌intLeft_x1 = 140; int Left_y1 = 30;/左边玩家已经出过的牌intLeft_x2 = 240; int Left_y2 = 65;/左边玩家刚出的牌int Right_x0 = 905; int Right_y0 = 140; /右边玩家未出的牌intRight_x1 = 800; int Right_y1 = 30; /右边玩家已经出过的牌intRight_x2 = 700; int Right_y2 = 65; /右边玩家刚

12、出的牌/三张显示的地主牌;int Lord_Card1_x = 379;int Lord_Card1_y = 30;int Lord_Card2_x = 471;int Lord_Card2_y = 30;int Lord_Card3_x = 563;int Lord_Card3_y = 30; intCard_x = 471; int Card_y = 190;/发牌的起始位置intCard_Distance0 = 18;/左,右玩家未出牌和中间玩家已出牌的间距intCard_Distance1 = 23;/左,右玩家已出牌的间距intCard_Distance2 = 25;/中间玩家未出牌

13、和刚出的牌的间距intCard_Up = 20;/中间扑克选择后突出的高度typedef unsigned short USHORT; /类型定义typedef unsigned short WORD;typedef unsigned char UCHAR;typedef unsigned char BYTE;3.2 函数3.2.1 模块间接口函数3.2.1.1 类CPLayingCards3.2.1.1.1CompareChoose函数名CompareChoose文件名./Playing_Cards.cpp功能概要比较大小后决定不要或者出牌记述形式int CompareChoose(CCar

14、dsType&);参数类型变量名I/O说明CCardsTypeCard_Type-返回值类型int说明值1出牌值0过牌详细说明初始化相关参数使用注意事项无3.2.1.1.2DirectChoose函数名DirectChoose文件名./Playing_Card.cpp功能概要直接选择出牌记述形式int DirectChoose();参数类型变量名I/O说明void-返回值类型int说明值-详细说明直接选择出牌使用注意事项无3.2.1.1.3CheckChooseing函数名CheckChoosing文件名./Playing_Card.cpp功能概要检查出牌的逻辑合法性记述形式int Check

15、Choosing ()参数类型变量名I/O说明void-返回值类型int说明值1合法值0不合法详细说明检查出牌的逻辑合法性使用注意事项无3.2.1.1.4CleanUp函数名CleanUp文件名./Playing_Card.cpp功能概要整理牌数据结构记述形式int CleanUp()参数类型变量名I/O说明void-玩家帐号返回值类型int说明值-详细说明整理牌数据结构使用注意事项无3.2.1.1.5AccountCardsValue函数名AccountCardsValue文件名./Playing_Card.cpp功能概要计算牌值记述形式int AccountCardsValue();参数类

16、型变量名I/O说明void-返回值类型int说明值-详细说明计算牌值使用注意事项无3.2.1.1.6AI_Patch1函数名AI_Patch1文件名./Playing_Card.cpp功能概要工人智能补丁记述形式BOOL AI_Patch1(); 参数类型变量名I/O说明void-返回值类型BOOL说明-详细说明工人智能补丁使用注意事项无3.2.1.2 类CMyDirectInput3.2.1.2.1IsLButtonDown函数名IsLButtonDown文件名./My_DirectInput.cpp功能概要检查是否在CRect中有鼠标左键按下记述形式int IsLButtonDown(co

17、nst CRect&);参数类型变量名I/O说明const CRect&rect-返回值类型int说明值1有鼠标左键按下值0无鼠标左键按下详细说明检查是否在CRect中有鼠标左键按下,如果有返回1,否则返回0使用注意事项无3.2.1.2.2ISRButtonDown函数名IsRButtonDown文件名./My_DirectInput.cpp功能概要检查是否在CRect中有鼠标左键按下记述形式int IsRButtonDown(const CRect&);参数类型变量名I/O说明const CRect&rect-返回值类型int说明值1有鼠标左键按下值0无鼠标左键按下详细说明检查是否在CRec

18、t中有鼠标左键按下,如果有返回1,否则返回0使用注意事项无3.2.1.3 类CGame3.2.1.3.1CompareCards函数名CompareCards文件名./Game.cpp功能概要比较当前牌是否为合法记述形式int CompareCards();参数类型变量名I/O说明void-座位号返回值类型int说明值1合法值0不合法详细说明比较当前牌是否为合法,合法返回1,不合法返回0使用注意事项无3.2.1.3.1AccountScore函数名AccountScore文件名./Game.cpp功能概要计算玩家得分信息记述形式void AccountScore ();参数类型变量名I/O说明

19、void-座位号返回值类型void说明值-详细说明在游戏结束时计算三位玩家的得分信息并显示得分情况使用注意事项无3.2.1.4 类CDrawCardsEngine3.2.1.4.1Dealing函数名Dealing文件名./Draw_Card_Engine.cpp功能概要发牌记述形式int Dealing()参数类型变量名I/O说明void-返回值类型int说明值-详细说明发牌使用注意事项无3.2.2 模块内接口函数3.2.2.1 类CDlg_Start3.2.2.1.1Server_Login函数名Server_Login文件名./Dlg_Start.cpp功能概要服务器端接收函数记述形式s

20、tatic DWORD WINAPI Server_Login(LPVOID pParam);参数类型变量名I/O说明LPVOIDpParam-返回值类型DWORD说明值-详细说明服务器端接收函数使用注意事项无3.2.2.1.2Client_Login函数名Client_Login文件名./ Dlg_Start.cpp功能概要客户端接收函数记述形式static DWORD WINAPI Client_Login(LPVOID pParam);参数类型变量名I/O说明LPVIODpParam-返回值类型DWORD说明值-详细说明客户端接收函数使用注意事项无3.2.2.2 类CServerGame

21、3.2.2.2.1SentCards函数名SentCards文件名./Server_Game.cpp功能概要传送牌数据结构给两个客户(服务器独有的函数)记述形式int SentCards(void);参数类型变量名I/O说明void-返回值类型int说明值-详细说明传送牌数据结构给两个客户(服务器独有的函数)使用注意事项无3.2.2.2.2DecideLord函数名DecideLord文件名./ Server_Game.cpp功能概要决定地主记述形式int DecideLord(void);参数类型变量名I/O说明void-返回值类型int说明值-详细说明决定地主 使用注意事项无3.2.2.2

22、.3LeftDoing函数名LeftDoing文件名./ Server_Game.cpp功能概要左边玩家思考,并决定要出的牌记述形式virtual int LeftDoing();参数类型变量名I/O说明void-返回值类型int说明值-详细说明左边玩家思考,并决定要出的牌使用注意事项无3.2.2.2.4CenterDoing函数名CenterDoing文件名./ Server_Game.cpp功能概要本机玩家思考,并决定要出的牌记述形式virtual int CenterDoing();参数类型变量名I/O说明void-返回值类型int说明值-详细说明本家玩家思考,并决定要出的牌使用注意事项无3.2.2.2.5RightDoing函数名RightDoing文件名./ Server_Game.cpp功能概要右边玩家思考,并决定要出的牌记述形式virtual int RightDoing();参数类型变量名I/O说明void-返回值类型int说明值-详细说明右边玩家思考,并决定要出的牌使用注意事项无3.2.2.2.6Run函数名Run文件名./ Server_Game.cpp功能概要整个游戏过程的中枢记述形式virtual int Run();参数类型变量名I/O说明void-返回值类型int说明值-详细说明整个游戏过程的中枢使用注意事项无

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号