1、南昌航空大学东软班 详细设计报告 版本:0.1.0 基于Windows系统的斗地主游戏的设计与实现详细设计总页数18正文15附录无生效日期2013-12-30编制 批准18修 改 履 历修改编号日期修改人版本号修改内容10.1.0初始做成目 录1文档概述41.1文档目的和范围41.2术语/缩略语41.3参考文档42处理42.1模块数据结构定义42.1.1全局变量定义42.2模块功能实现82.2.1模块内部函数81 文档概述1.1 文档目的和范围此文档是对基于Windows系统的斗地主游戏的服务器端模块的详细设计描述,主要是描述了本模块与其它模块的接口函数和内部接口函数以及内部函数的定义、流程图
2、和构成图以及测试项目的记述。并为后期测试提供依据。1.2 术语/缩略语序号术语/缩略语说明1MFCMicrosoft Foundation Classes,微软基础类2DirectXDirect eXtension,简称DX,是由微软公司创建的多媒体编程接口1.3 参考文档序号文档名作者时间版本1详细设计模板IA事业部2007-11-90002详细设计方法IA事业部2007-11-90003函数说明指南IA事业部2007-6-41104流程图指南IA事业部2007-6-41105概要设计杨丽娟2013-120102 处理2.1 模块数据结构定义2.1.1全局变量定义/主窗口句柄extern H
3、WND hWnd;class CMainFrame;/主窗口类指针;设为全局变量便于各个类访问其方法extern CMainFrame* pCMainFrame;/关于Direct设备的类/DirectInput设备接口指针class CMyDirectInput;extern CMyDirectInput* pInput;/DirectDraw设备接口指针class CMyDirectDraw;extern CMyDirectDraw* pDraw;extern LPDIRECTDRAWSURFACE7 lpddsprimary; / 主表面extern LPDIRECTDRAWSURFAC
4、E7 lpddsback; /后缓冲表面extern LPDIRECTDRAWSURFACE7 lpddsbg_Game; /存放游戏界面的离屏表面/主窗口句柄HWND hWnd;/主窗口类指针;设为全局变量便于各个类访问其方法CMainFrame* pCMainFrame;/DirectDraw设备对象指针CMyDirectInput* pInput;CMyDirectDraw* pDraw;LPDIRECTDRAWSURFACE7 lpddsprimary;/ dd primary surfaceLPDIRECTDRAWSURFACE7 lpddsback;/ dd back surfac
5、eLPDIRECTDRAWSURFACE7 lpddsbg_Game;/离屏表面/游戏主体框架类指针CGame* pGame;/54张扑克CCard g_cAllCards54;/存储玩家信息的类CPlayerInfo* pCenterPlayer;CPlayerInfo* pLeftPlayer;CPlayerInfo* pRightPlayer;CPlayingCards* pLeftCards; /左边玩家的牌对象CPlayingCards* pCenterCards; /主机玩家的牌对象CPlayingCards* pRightCards; /右边玩家的牌对象/关于其他精灵的绘制引擎C
6、DrawItemEngine* pDrawItem;/关于扑克绘制的引擎CDrawCardsEngine* pDrawCards;/游戏牌面坐标系统CCardsMap* pCardsMap;/网络设备CLink* pServerLink1; /连接客户1CLink* pServerLink2; /连接客户2CLink* pClientLink; /客户端1/位置坐标int Screen_Width = 1024;int Screen_Height = 768; /屏幕长,宽int Cards_Width = 82;int Cards_Height = 114; /扑克长宽/int Face_W
7、idth = 70;int Face_Height = 70;/头像的长宽intCenter_x0 = 350; int Center_y0 = 620; /中间玩家未出的牌intCenter_x1 = 230; int Center_y1 = 470; /中间玩家已经出过的牌intCenter_x2 = 330; int Center_y2 = 340; /中间玩家刚出的牌intLeft_x0 = 35; int Left_y0 = 140;/左边玩家未出的牌intLeft_x1 = 140; int Left_y1 = 30;/左边玩家已经出过的牌intLeft_x2 = 240; int
8、 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; /右边玩家刚出的牌/三张显示的地主牌;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_
9、Card3_y = 30; intCard_x = 471; int Card_y = 190;/发牌的起始位置intCard_Distance0 = 18;/左,右玩家未出牌和中间玩家已出牌的间距intCard_Distance1 = 23;/左,右玩家已出牌的间距intCard_Distance2 = 25;/中间玩家未出牌和刚出的牌的间距intCard_Up = 20;/中间扑克选择后突出的高度typedef unsigned short USHORT; /类型定义typedef unsigned short WORD;typedef unsigned char UCHAR;typede
10、f unsigned char BYTE;2.2 模块功能实现2.2.1模块内部函数2.2.1.1 类CDlg_Start2.2.1.1.1Server_Login【函数式样】函数名Server_Login文件名./Dlg_Start.cpp功能概要服务器端登陆接收函数记述形式static DWORD WINAPI Server_Login(LPVOID pParam);参数类型变量名I/O说明LPVOIDpParam-返回值类型DWORD说明值-详细说明服务器端接收函数使用注意事项无【函数处理流程】图 1 服务器端登陆接收流程图2.2.1.2Client_Login【函数式样】函数名Clie
11、nt_Login文件名./ Dlg_Start.cpp功能概要客户端登陆接收函数记述形式static DWORD WINAPI Client_Login(LPVOID pParam);参数类型变量名I/O说明LPVIODpParam-返回值类型DWORD说明值-详细说明客户端接收函数使用注意事项无【函数处理流程】图 2 客户端登陆接收流程图2.2.1.2 类CServerGame2.2.1.2.1SendCards【函数式样】函数名SentCards文件名./Server_Game.cpp功能概要传送牌数据结构给两个客户(服务器独有的函数)记述形式int SentCards(void);参数类
12、型变量名I/O说明void-返回值类型int说明值-详细说明传送牌数据结构给两个客户(服务器独有的函数)使用注意事项无【函数处理流程】图 3 服务器传送牌数据流程图2.2.1.2.2DecideLord【函数式样】函数名DecideLord文件名./ Server_Game.cpp功能概要决定地主记述形式int DecideLord(void);参数类型变量名I/O说明void-返回值类型int说明值-详细说明决定地主 使用注意事项无【函数处理流程】图 4 决定当不当地主流程图2.2.1.2.3LeftDoing【函数式样】函数名LeftDoing文件名./ Server_Game.cpp功能
13、概要左边玩家思考,并决定要出的牌记述形式virtual int LeftDoing();参数类型变量名I/O说明void-返回值类型int说明值-详细说明左边玩家思考,并决定要出的牌使用注意事项无【函数处理流程】图 5 出牌逻辑2.2.1.2.4CenterDoing【函数式样】函数名CenterDoing文件名./ Server_Game.cpp功能概要本机玩家思考,并决定要出的牌记述形式virtual int CenterDoing();参数类型变量名I/O说明void-返回值类型int说明值-详细说明本家玩家思考,并决定要出的牌使用注意事项无【函数处理流程】2.2.1.2.5RightD
14、oing【函数式样】函数名RightDoing文件名./ Server_Game.cpp功能概要右边玩家思考,并决定要出的牌记述形式virtual int RightDoing();参数类型变量名I/O说明void-返回值类型int说明值-详细说明右边玩家思考,并决定要出的牌使用注意事项无【函数处理流程】2.2.1.2.6Run【函数式样】函数名Run文件名./ Server_Game.cpp功能概要整个游戏过程的中枢记述形式virtual int Run();参数类型变量名I/O说明void-返回值类型int说明值-详细说明整个游戏过程的中枢使用注意事项无【函数处理流程】图 6 游戏中枢流程图