为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > [优质文档]多多游戏登录干事器模块设计

[优质文档]多多游戏登录干事器模块设计

2018-03-05 23页 doc 55KB 13阅读

用户头像

is_614050

暂无简介

举报
[优质文档]多多游戏登录干事器模块设计[优质文档]多多游戏登录干事器模块设计 多多游戏 登录服务器模块设计报告 KBT-DD-SERVER-MODULE 文件状态: 文件标识: [?] 草稿 1.0 当前版本: [ ] 正式发布 作 者: 我 [ ] 正在修改 完成日期: 深圳凯比特网络技术有限公司 版 本 历 史 版本/状态 作者 参与者 起止日期 备注 1.0 8.31—9.1 我 目 录 目 录 0. 文档介绍 ................................................. 5 0.1 文档目的 ......
[优质文档]多多游戏登录干事器模块设计
[优质文档]多多游戏登录干事器模块设计 多多游戏 登录服务器模块设计报告 KBT-DD-SERVER-MODULE 文件状态: 文件标识: [?] 草稿 1.0 当前版本: [ ] 正式发布 作 者: 我 [ ] 正在修改 完成日期: 深圳凯比特网络技术有限公司 版 本 历 史 版本/状态 作者 参与者 起止日期 备注 1.0 8.31—9.1 我 目 录 目 录 0. 文档介绍 ................................................. 5 0.1 文档目的 ........................................... 5 0.2 文档范围 ........................................... 5 0.3 读者对象 ........................................... 5 0.4 参考文献 ........................................... 5 0.5 术语与缩写解释 ................................ 5 1. 模块命名规则 .......................................... 6 2. 模块汇总 ................................................. 6 2.1 模块汇总表 ....................................... 6 2.2 模块关系图 ....................................... 6 3. 五子棋服务器模块设计 .......................... 7 3.1 CSOCKETSERVER : PUBLIC CASYNCSOCKET7 3.1.1 功能描述 ..................................... 7 3.1.2接口与属性 .................................. 7 3.1.3数据结构与算法 ........................... 7 3.1.4补充说明 ...................................... 7 3.2 CLASS CSOCKETCLIENT : PUBLIC CASYNCSOCKET7 3.2.1 功能描述 ..................................... 7 3.2.2接口与属性 ................................. 8 3.2.3数据结构与算法 ......................... 13 3.2.4补充说明 .................................... 14 3.3 CDESKINFO ....................................... 14 3.3.1 功能描述 ................................... 14 3.3.2接口与属性 ................................ 14 3.3.3数据结构与算法 ......................... 17 3.3.4 .................................... 18 补充说明 3.4 CGAMEROOM.................................... 18 3.4.1 功能描述 ................................... 18 3.4.2接口与属性 ................................ 18 3.4.3数据结构与算法 ......................... 19 3.4.4补充说明 .................................... 19 3.5 CLASS CHYPERLINK : PUBLIC CSTATIC19 3.6 CLASS CMD5CHECKSUM .................. 19 3.7 CLASS CSERVERAPP : PUBLIC CWINAPP20 3.8 CLASS CSERVERDLG : PUBLIC CDIALOG20 3.1.1 功能描述 ................................... 20 3.1.2接口与属性 ................................ 20 3.9 CLASS CUSERINFO ............................ 21 3.9.1 功能描述 ................................... 21 3.9.2接口与属性 ................................ 21 3.9.3数据结构与算法 ......................... 22 3.9.4 .................................... 22 补充说明 3.10 CLASS CVARINFO ............................ 22 3.10.1 功能描述 ................................. 22 3.10.2接口与属性 .............................. 23 3.10.3数据结构与算法 ....................... 23 3.10.4补充说明 .................................. 23 3.11 全局 ............................................... 23 4. 五子棋数据库操作模块设计 ................ 25 5. 其他 ....................................................... 26 0. 文档介绍 0.1 文档目的 0.2 文档范围 0.3 读者对象 0.4 参考文献 提示:列出本文档的所有参考文献(可以是非正式出版物),格式如下: [标识符] 作者,文献名称,出版单位(或归属单位),日期 0.5 术语与缩写解释 缩写、术语 解 释 … 1. 模块命名规则 提示:模块设计人员确定本软件的模块命名规则(例如类、函数、变量等),确保模块设计文档的风格与代码的风格保持一致。可以从机构的编程中摘取或引用(如果存 在的话)。 2. 模块汇总 2.1 模块汇总表 提示:这里模块是指相对独立的软件设计单元,例如对象类、函数包等等。 子系统A 模块名称 功能简述 … 子系统B 模块名称 功能简述 … 2.2 模块关系图 提示:参考体系结构设计文档 3. 登录服务器模块设计 3.1 CSocketServer : public CAsyncSocket 3.1.1 功能描述 服务器侦听Socket 3.1.2接口与属性 1. int OnCount(): 检查玩家是否掉线(多少秒没有信息)或是已经被删除了,返回在线数 2. virtual void OnAccept(int nErrorCode) 接收连接,一旦连接则把连接Client Socket加入到列表 3. CSocketServer( /*CDialog *pDlg*/ ); 4. virtual ~CSocketServer(); 清楚列表中的数据 5. CList m_listSocket 客户端Socket列表指针 3.1.3数据结构与算法 定时运行OnCount,用于清除断线的和统计人数 3.1.4补充说明 3.2 class CSocketClient : public CAsyncSocket 3.2.1 功能描述 客户端连接Socket处理 3.2.2接口与属性 1. BOOL m_bDel;是否该用户已删除 2. long m_nTimer;定时器 3. CSocketClient(); 成员变量初始化 4. virtual ~CSocketClient(); 5. void SendCmd(CString &strCmd); 将数据strCmd发送出去 6. void SendCmd( char* szCmd ); 将数据szCmd发送出去 7. static BOOL OnGetGameInfo(); 取游戏列表信息 8. static void Destory(); 销毁游戏房间 9. static BOOL Init(); 创建并初始化游戏房间 10. static CGameRoom* m_pGameRoom; 游戏房间指针 11. static CString m_strServerInfo; 服务器名称命令内容 m_strServerInfo = "SSI:多多游戏||\r\n"; 12. static CString m_strDLLFileName; DLL文件全名 13. static CString Decode(CString& str); 字符串解码 参数:CString& str :返回解码后字符串 返回:解码后字符串 14. static CDatabase m_db; 数据库 15. static void LogError(char *szErrorMsg); 错误记录到日志 参数:char* 错误内容 返回:空 16. virtual void OnClose(int nErrorCode); Socket关闭的处理 否 是游戏的Socket 是 否 游戏中是房间Socket 是 向屋里和桌上人广播发送删除房间Socket置NULL玩家状态(断线)玩家信息给本桌 向桌上人广播玩家发送玩家状态 状态(断线)消息信息给所有 两Socket都空且非断线 用户退出游戏 Client Socket Close的处理 17. virtual void OnReceive(int nErrorCode); 数据接收并调用处理 18. virtual void OnSend(int nErrorCode); 数据发送 19. void OnCmdLargessMoney(CString& strLine); 参数:CString :包含对方用户ID和银两数目 赠送银两 条件: , 离开桌子 , 银两要够 , 对方必须在线 然后广播系统信息,>发添加用户信息给GameRoom->在发给桌子 ,已经离开桌子了呀 20. void OnStartGame( CDeskInfo& DeskInfo, int nDesk ); 参数: 1、 返回桌子信息 CDeskInfo 2、 Int 桌子号 发送玩家状态、桌子状态给Room 发送游戏开始给桌子 21. void OnCmdRequestJoin(CString& strLine); 参数:CString 用户ID 邀请加入 22. void OnCmdAgreeRepent(CString& strLine); 参数 CString <0:拒绝悔棋 >=0: 玩家对悔棋请求的回复 23. void OnCmdRequestRepent(CString& strLine); 参数:CString 悔棋的手数 玩家请求悔棋 24. void CheckDeskBreakStatus(); 检查桌上玩家断线状态,如果双方断线,则按和棋处理。 25. void SaveUserInfo( CUserInfo** ppUsers ); 保存用户信息到数据库 参数:CUserInfo** 为当前桌玩家的数据指针的指针 26. void OnCmdTestTimer(); 检查时间,是超时判负还是断线时间太长强行退出,或者正常 当前是断线,判断是否应该强退 当前在线玩,判断是否超时判负 27. void OnCmdLoss(); 中盘认输 28. void OnCmdJin(CString& strLine); 禁手判断 判断是否对方下出禁手而输 29. void OnCmdSwap(); 申请交换 30. void OnCmdWin(CString& strLine); 申请获胜 参数:棋子坐标 31. void OnCmdGo(CString& strLine); 走子 参数:CString 手数|坐标X|坐标Y 对走子进行逻辑判断 32. void OnEndGame(int nWinState, CUserInfo* pUserInfo, CString strPrompt); 结束游戏 参数: Int nWinState:赢棋状态 1:0:-1 赢:和:负 CUserInfo* pUserInfo:玩家 CString strPrompt:提示给桌子的信息 返回:空 保存用户信息,>发送结束信息给本桌,> 如果桌子游戏状态为在玩:发送状态给所有人,发送状态给本桌 如果桌子游戏状态为断线:发送离开的提示 发送改变大厅桌子的状态给Room 33. void OnCmdSetStartStatus(); 处理命令: 开始状态 判断开始的条件,>设置为开始状态->判断是否开始游戏 34. void OnCmdSetAccord(CString& strLine); 约定 参数:CString 约定数据 35. void OnCmdSit(); 坐下 判断位置是否合法,>从观看者列表中删除->发送给大厅位置状态->发送自己 的状态给本桌玩家 36. void OnCmdExitGame(CString& strLine); 参数:未用 强行退出游戏 37. void OnCmdJoinGame(CString& strLine); 加入一个游戏 参数:CString 用户ID|Session 38. void OnCmdSetDeskSetup(CString& strLine); 设置桌子设置 39. void OnCmdSay(CString& str); 聊天 40. void OnExit(CUserInfo* pUserInfo); 用户退出 41. void OnCmdJoinGameDesk(CString& strLine); 玩家加入一个桌子 参数: , 1:命令 0:观看 其余:坐下 , 2:桌子号 , 3:座位号 42. void OnCmdGetServerInfo(); 取服务器信息 发送服务器信息 发送当前桌的状态 发送自己的状态给所有本桌的人 43. long OnLogin(CString &strUser, CString &strPasswd, CString &strIP); 用户登录 参数: , strUser 用户 , strPasswd 密码 , strip IP 返回: //-6非会员, -4内部错误, -3已经在线, -2人满, -1登录失 败, 0-nMaxUser登录成功 44. void OnCmdLogin(CString& strParam); 用户登录 , 用户是否Hello过 , MD5码校验是否通过 , 调用上一个登录 , 处理结果,如果是成果,则生成随机Session给Client,作为进入游戏的 标志 , 发送用户列表 , 发送桌子列表 45. void OnCmdHello(CString& strParam); Hello握手 参数:版本号 检查版本,发送结果 46. void OnCmd(CString str); 参数:消息数据 消息分发 47. CByteArray m_buffer; 发送缓冲区 48. CString m_strCmds; 接收到的命令 49. CString m_strHello; Hello的时间 50. CUserInfo* m_pUserInfo; 用户信息 51. long m_nSendSize; //待发送的字节 52. long m_nTestSpeed; //测试网速用的 53. 3.2.3数据结构与算法 定时运行OnCount,用于清楚断线的和统计人数 3.2.4补充说明 3.3 CDeskInfo 3.3.1 功能描述 桌子信息及桌子的一些处理 3.3.2接口与属性 1. BOOL static m_bCanAccord; 是否运行约定 2. long static m_nDefaultSetTimer1;缺省时间1 3. long static m_nDefaultSetTimer2;缺省时间2 4. long static m_nDefaultSetMoney;缺省银子 5. BOOL static m_bDefaultJinShou;缺省允许禁手 6. BOOL static m_bDefaultRepent;缺省允许反悔 7. void GetPlayInfo(CSocketClient* pSocket); 取玩家信息 参数:Client Socket 取玩家的设置信息和已走棋子 8. BOOL TestJinShou( int X, int Y ); 检查该子是否是禁手 参数:落子坐标 返回:TRUE 是 FALSE 否 9. BOOL TestWin( int nX, int nY ); 检查是否赢了 参数:落子坐标 返回:TRUE 赢 FALSE 未赢 10. void ResetAccord(); 复位约定 11. BOOL CheckStart(); 检查是否开始了 返回:TRUE 开始 FALSE 未开始 12. void Init(); 初始化 清棋盘数据 13. void SendToAll(CString& strCmd, BOOL bLookon); 发送命令给桌子所有人 参数: strCmd 发送的命令 BOOL bLookon 是否发送给观看者 14. void GetDeskInfo(CSocketClient* pSocket); 取桌子信息 取所有玩家信息列表 取所有观看者信息列表 15. BOOL SetCheck( long nBreakRate, long nNetSpeed, BOOL bIP, CString& strPasswd ); 设置检查项,需要每个用户都为空,,, 参数 , Long nBreakRate:断线率 , Long nNetSpeed:网速 , BOOL bIP:是否同IP , CString strPasswd:桌子密码 16. BOOL JoinCheck(CUserInfo* pUserInfo, CString& strCmd); 检测是否符合加入的条件 参数: CUserInfo* pUserInfo 想要加入桌子的用户 CString& strCmd 返回检查结果需要发送的命令 申请加入桌子 用户都为空, 判断IP 判断断线率 判断网速 允许加入桌子不允许加入桌子 17. void DelLookonUser(CUserInfo* pUserInfo); 删除一个观看者 18. void AddLookonUser(CUserInfo* pUserInfo); 添加一个观看者 19. CDeskInfo(); 桌子初始化,初始化约定,人物清空 20. virtual ~CDeskInfo(); 21. struct tagGoInfo{ a) int nX; b) int nY; c) BOOL bWhite; d) long nTimer; }; 走棋的信息 22. BOOL m_bPlay; //是否开始状态 23. CUserInfo* m_pUserInfo[4]; //指向当前桌用户信息的指针 24. CPtrArray m_LookonUsers; //观看玩家 25. 第一个坐下者的设置 a) long m_nBreakRate; //断线率 b) long m_nNetSpeed; //网络速度 c) BOOL m_bIP; //IP禁止 d) CString m_strPasswd;//密码设置 26. 约定信息 a) long m_nAccord; //约定情况 b) BOOL m_bRepent; //是否允许悔棋 c) BOOL m_bJinShou; //是否有禁手 d) long m_nSetMoney;//下注银两 e) long m_nSetTime1;//设总用时 f) long m_nSetTime2;//设读秒 27. 游戏的信息 a) long m_nStartPos; //执黑的位置 b) long m_nTimer; //记时器 c) long m_nHands; //手数 d) long m_nGameCount; //对局数 e) char m_KNL[15][15]; //棋盘数据 f) tagGoInfo m_GO[250]; //走棋的信息指针 3.3.3数据结构与算法 struct tagGoInfo{ g) int nX; //x坐标 h) int nY; //y坐标 i) BOOL bWhite; //是白棋还是黑棋 j) long nTimer; //定时器 }; 走棋的信息 3.3.4补充说明 3.4 CGameRoom 3.4.1 功能描述 游戏房间管理 3.4.2接口与属性 1. CUserInfo* FindUser(long nUin); 查找用户 参数:long nUin 用户ID 返回:CUserInfo* 用户信息 2. void GetDeskList(CSocketClient* pSocket); 取得桌子列表 参数:CSocketClient* pSocket 用于发送桌子信息的Socket 3. void GetUserList( CSocketClient* pSocket ); //取得玩家列表 //AU:ID|名称|性别|人像|桌子|位置|状态|等级|积分|胜|负|和|总局数|逃跑|胜 率|银两|门派身份| 参数:CSocketClient* pSocket 用于发送玩家信息的Socket 4. void SendToDesk(long nDesk, CString& str); 发送信息给某桌玩家 参数: , long nDest : 桌号 , CString& str 待发送信息 5. void SendToAll(CString& str); 发送信息给所有玩家 参数: , CString& str 待发送信息 6. BOOL DelUserInfo(long nUin); 删除玩家信息 参数:long nUin 用户ID 返回:成功返回TRUE,失败返回FALSE 7. BOOL AddUser(CUserInfo* pUserInfo); 添加玩家信息 8. CGameRoom(); 9. virtual ~CGameRoom(); 清理房间,删除所有用户 10. CDeskInfo m_Desks[100]; 100张桌子 11. CMap m_mapUsers; 用户列表 3.4.3数据结构与算法 3.4.4补充说明 3.5 class CHyperLink : public CStatic 略 3.6 class CMD5Checksum 略 3.7 class CServerApp : public CWinApp 略 3.8 class CServerDlg : public CDialog 3.1.1 功能描述 主控对话框 3.1.2接口与属性 1. CServerDlg(CWnd* pParent = NULL); standard constructor 初始化变量 2. CHyperLink m_homepage; 一个超链接 3. CString m_strCount; 连接数量 4. CString m_strPort; 服务器绑定端口 5. CString m_strStatus; 服务器运行状态 6. CString m_strVersion;服务器版本 7. virtual BOOL PreTranslateMessage(MSG* pMsg); 消息预处理 忽略ESC键 8. void OnStart(UINT nPort); 启动服务器Socket Listening 9. void OnCount(); 更新连接数 10. CDatabase m_db;数据库 11. CSocketServer* m_pSocketServer;服务器Socket 12. UINT m_nPort; 服务器Socket端口 13. HICON m_hIcon; 图标句柄 14. virtual void OnOK(){}; 用来忽略回车退出 15. virtual BOOL OnInitDialog(); 主控对话框初始化 , 取得DLL文件名 , 取得站名和主页URL , 侦听的端口 , 数据库连接定义 , 服务标志定义 , 默认约定设置 , 开启服务器Socket , 启动计数定时器 , 启动取游戏信息定时器 16. afx_msg void OnPaint(); 17. afx_msg HCURSOR OnQueryDragIcon(); 18. afx_msg void OnDestroy(); , 停止Socket , 关闭数据库 19. afx_msg void OnTimer(UINT nIDEvent); 定时处理 , 定时计数 , 定时取游戏信息 3.9 class CUserInfo 3.9.1 功能描述 用户信息 3.9.2接口与属性 1. CUserInfo(); 用户信息初始化 2. virtual ~CUserInfo(); 3. LPVOID m_pSocketRoom; //房间连接 4. LPVOID m_pSocketGame; //游戏连接 5. long m_nSession;//会话号 6. long m_nUin; //ID号 7. char m_szName[256]; //名称 8. long m_nSex; //性别(0女1男) 9. long m_nFace; //人像(0/1/2) 10. long m_nDesk; //所在桌号 11. long m_nDeskPos;//桌上位置 12. long m_nStatus; //状态 0无 1暂停 2等待 3坐下 4同意 5开始 6断线 7 观看 13. char m_szLevel[256]; //等级 14. long m_nResult; //积分 15. long m_nWin; //胜 16. long m_nLoss; //负 17. long m_nPeace; //和 18. long m_nCount; //总局数 19. long m_nFlee; //逃跑 20. long m_nWins; //胜率 21. long m_nMoney; //银两 22. char m_szGroup[256];//门派身份 23. long m_nBreakRate; //断线率 24. long m_nBreakTimer; //断线时间 25. long m_nSpeed; //网速 26. long m_nLoginTimer; //上线时间,用于泡点换银两 27. long m_nUseTime; //用时 3.9.3数据结构与算法 3.9.4补充说明 3.10 class CVarInfo 3.10.1 功能描述 用于与数据库操作DLL的接口 3.10.2接口与属性 a) char m_szDatabase[256]; //数据库连接定义 b) long m_nItem; //项目号 3.10.3数据结构与算法 3.10.4补充说明 3.11 全局 1. Define #define DESK_CANACCORD CDeskInfo::m_bCanAccord #define DESK_SETTIME1 CDeskInfo::m_nDefaultSetTimer1 #define DESK_SETTIME2 CDeskInfo::m_nDefaultSetTimer2 #define DESK_SETMONEY CDeskInfo::m_nDefaultSetMoney #define DESK_JINSHOU CDeskInfo::m_bDefaultJinShou #define DESK_REPENT CDeskInfo::m_bDefaultRepent #define MAX_DESK 100 //桌子数量 #define IDT_COUNT 0x100 //时钟ID #define IDT_GETINFO 0x102 //获得在线信息 #define WM_SOCKETCLOSE (WM_USER+20004) #define MAX_BUFFER_SIZE 4096 #define WM_SOCKETACCEPT (WM_USER+20000) #define NONE -1 //未坐 #define DESK_LEFT 0 //左 #define DESK_TOP 1 //上 #define DESK_RIGHT 2 //右 #define DESK_BOTTOM 3 //下 #define S_NONE 0 //无 #define S_STOP 1 //暂停 #define S_WAIT 2 //等待 #define S_SIT 3 //坐下 #define S_START 4 //同意 #define S_PLAY 5 //开始 #define S_BREAK 6 //断线 #define S_LOOKON 7 //观看 2. 变量 BOOL CDeskInfo::m_bCanAccord = TRUE; long CDeskInfo::m_nDefaultSetTimer1 = 600; long CDeskInfo::m_nDefaultSetTimer2 = 30; long CDeskInfo::m_nDefaultSetMoney = 0; BOOL CDeskInfo::m_bDefaultJinShou = 0; BOOL CDeskInfo::m_bDefaultRepent = 1; extern CVarInfo g_VarInfo; CVarInfo g_VarInfo; CString CSocketClient::m_strServerInfo = "SSI:天云阁网络游戏世界||\r\n"; CString CSocketClient::m_strDLLFileName = ""; CGameRoom* CSocketClient::m_pGameRoom = NULL; 4. 五子棋数据库操作模块设计 1. void OnInitVariant( CVarInfo* pVarInfo ) 功能描述: 服务器启动时调用 参数说明: pVarInfo 为数据库的连接和在线人数 更新在线标志 更新在线人数 2. void OnGetGameInfo( CVarInfo* pVarInfo ) 功能描述: 统计本服务器在线人数 参数说明: pVarInfo 为数据库的连接和在线人数 3. void OnGameEnd( CUserInfo** ppUsers, int nUserCount, CVarInfo* pVarInfo ) 功能描述: 游戏结束启动时调用 参数说明: **ppUsers 为当前桌玩家的数据指针的指针 nUserCount 为玩家数据指针的数量 pVarInfo 为数据库的连接和在线人数 4. void OnUserExit( CUserInfo* pUserInfo, CVarInfo* pVarInfo ) 功能描述: 玩家离线处理 参数说明: pUserInfo 为当前桌玩家的数据指针 pVarInfo 为数据库的连接和在线人数 5. long OnUserLogin(LPCTSTR lpszUser, LPCTSTR lpszPasswd, LPCTSTR lpszIP, CUserInfo* pUserInfo, CVarInfo* pVarInfo) 功能描述: 玩家登录处理 参数说明: lpszUser 用户帐号,默认当ID号处理 lpszPasswd 用户密码 lpszIP 用户登录时的IP pUserInfo 为当前桌玩家的数据指针 pVarInfo 为数据库的连接和在线人数 返 回 值: -6非会员, -4内部错误, -3已经在线, -2人满, -1登录失败, 0-nMaxUser登录成功 6. //等级设置 LPCTSTR g_szLevel[14] = { "0初学", "0初学", "0初学", "0初学", "1段", "2段", "3段", "4段", "5段", "6段", "7段", "8段", "9段", "棋圣" }; 5. 其他
/
本文档为【[优质文档]多多游戏登录干事器模块设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索