收藏 分销(赏)

游戏软件设计说明.doc

上传人:xrp****65 文档编号:7432565 上传时间:2025-01-04 格式:DOC 页数:27 大小:234.50KB 下载积分:10 金币
下载 相关 举报
游戏软件设计说明.doc_第1页
第1页 / 共27页
游戏软件设计说明.doc_第2页
第2页 / 共27页


点击查看更多>>
资源描述
XXXXXXXXX游戏软件V1.0 XXXXXX游戏软件设计说明 1引言 1.1标识 本文档是棋牌游戏XXXXXXXXXXXX游戏软件设计说明文档,阅读对象是产品开发,测试和维护人员。 1.2范围 本文档包括软件产品的系统设计和详细设计两大部分,系统设计部分主要描述产品的模块划分,相互依赖关系和交互接口,详细设计部分通过包图、类图、状态图等描述系统功能的具体实现方法和流程。 1.3定义和缩写 1.“本软件”或“本产品”指: (1)XXXXXXXXXXXX游戏软件V1.0。 (2)相关的说明性书面材料、说明书以及电子文档(如果有的话)。 (3)XXXXXX公司许可您使用的本软件的相关的更新程序,或者修改版(如果有的话)。 2.“使用”指对本软件安装、设置或者以其他方式对本软件做功能性使用。 3.“用途”指您使用本软件的限制和范围。 4.“XXXXXXXXXXXX游戏软件”缩写“XXXXXXXXXXXX”。 2参考献文 【1】软件设计说明:Survivor之新东方客栈软件设计说明 来源于。 3 结构设计 3.1 服务端模块分解 XXXXXXXXXXXX服务端共分为四个模块:游戏棋盘模块(Chessboard),棋盘服务模块(ChessboardSink2pSuper)游戏桌子模块(TableFrameSink),游戏服务器管理模块(GameServerManager)。 Module 1 Module 3 Module 4 Chessboard TableFrameManager GameServerManager Module 2 ChessboardSink2pSuper 图 3-1-1-1 服务端模块划分 3.1.1 模块1 游戏棋盘模块 说明 本模块定义了棋子数组和各个子的走法,包括车、马、炮这几个特殊棋子的走法和吃子规则(CanRookMove、CanHorseMove、CanCannonEat)并提供一个对外部游戏判断棋子是否可行可吃的总接口Action,针对车、马、炮这三个特殊的棋子,还分别提供了SearchRookPath、 SearchHorsePath、SearchCannonEatPath这三个搜寻可走路径的函数 3.1.2 模块 2 棋盘服务模块 说明 本模块接手了模块3的功能,定义了服务端游戏控制流程,包括游戏初始化、等待、属性、开始游戏,游戏结束和结算,分别有各自的控制逻辑和交互界面。 3.1.3 模块 3 游戏桌子模块 说明 本模定义了棋盘服务的建立,使用棋盘服务控制游戏流程。 3.1.4模块 4游戏服务器管理模块 说明 本模块定义了服务端的建立,主要成员函数包括:创建游戏桌(CreateTableFrameSink)。 3.2 客户端模块分解 XXXXXXXXXXXX客户端共分四个模块:游戏对话框模块(GameClientDlg),游戏视图模块(CGameView),游戏棋盘模块(ChessboardView),猜拳模块(GuessView) Module 3 Module 2 ChessboardView GameView Module 1 GameClientDlg Module 4 GuessView 图 3-2-1-1 客户端模块划分 3.2.1 模块 1游戏对话框模块 说明 本模块定义了客户端游戏控制流程,如:游戏设置(OnGameOptionSet)用于功能设置,网络消息(OnGameMessage)用于发送用户游戏消息,游戏场景(OnGameSceneMessage)用于发送游戏过程状态 3.2.2 模块 2 游戏场景模块 说明 本模块定义了游戏进行时的场景,游戏场景包括区域的绘制、场景信息贴图,走棋动画。 3.2.3 模块 3游戏逻辑模块 说明 本模块定义了棋子数组和各个子的走法,包括车、马、炮这几个特殊棋子的走法和吃子规则(CanRookMove、CanHorseMove、CanCannonEat)并提供一个对外部游戏判断棋子是否可行可吃的总接口Action,针对车、马、炮这三个特殊的棋子,还分别提供了SearchRookPath、 SearchHorsePath、SearchCannonEatPath这三个搜寻可走路径的函数 3.2.4 模块4猜拳模块 说明 本模块定义了猜拳游戏场景的渲染,猜拳动画,用于决定哪个玩家先行棋 3.3全局数据结构说明 3.3.1 常量 (1) 服务端常量 WORD g_wGamePlayer; //游戏人数 WORD g_wGameMode; //游戏模式 ITableFrame * m_pITableFrame; //框架接口 const tagGameServiceOption * m_pGameServiceOption; //配置参数 static const enStartMode m_GameStartMode; //开始模式 ChessboardSink * m_pChessboardSink; //棋盘服务(服务端的网络消息处理和其他变量都交给棋盘服务) 棋盘服务常量: static const BYTE m_cbBuyPropsBaseCoin[5]; //购买道具的基数 static const BYTE m_cbPropsLimitBuyCount[5]; //限制购买道具数量 (2) 客户端常量 CGameView * g_pGameView; //游戏视图 CGuessView * g_pGuessView; //猜拳视图 3.3.2 变量 (1) 服务端变量(棋盘服务变量) 所在类:ChessboardSink2pSuper Chessboard2pSuper m_chessboard; //棋盘 LONG m_lPropsCostCoin[5]; //道具花费 LONG m_lBuyPropsCoin[2]; //各个玩家购买道具的金币数 bool m_isBoughtProps[2][5]; //玩家是否购买了某个道具 BYTE m_cbBoughtPropsCount[2][5]; //购买了某个道具的数量 BYTE m_cbFreePropsCount[2][5]; //玩家获得某个免费道具的数量 WORD m_wBeLimitedCount[2]; //玩家被人使用了禁锢道具的数量 BYTE m_cbPeepCount[2]; //玩家使用马灯的数量 PEEP *m_pPeep[2]; //玩家拥有的马灯结构(包括透视周围三颗棋子的坐标) WORD m_wFreePropsUsedCount[2][5]; //免费道具使用数量 bool m_isUsedBoughtProps[2]; //是否使用了购买的道具 WORD m_wBuyPropsUsedCount[2][5]; //购买道具使用数量 WORD m_wBeUsedPropsCount[2][5]; //被道具作用次数 LONG m_lUserUsedPropsCoin[2]; //各个玩家使用道具的金币数 CMD_S_Guess m_guess; //猜谁先行 Chess m_clientChessArr[6][6]; //对应的客户端的棋盘数组 Chess m_seizeChessArr[2][16]; //玩家吃子数组 BYTE m_cbSeizeChessCount[2]; //玩家吃子数 BYTE m_cbPromisePeaceCount[2]; //玩家被答应和棋的数量 BYTE m_cbPromiseGiveupCount[2]; //玩家被答应认输的数量 WORD m_wBegPeaceStatus[2]; //玩家求和状态 WORD m_wBegGiveupStatus[2]; //请求认输状态 WORD m_wTimeOutCount[2]; //玩家超时次数 WORD m_wThinkTime[2]; //思考时间(可变) bool m_isOver[2]; //玩家是否被吃光棋子或者主动认输 bool m_isRevokeOffLine[2]; //是否掉线后回来 BYTE m_cbColor[2]; //玩家所执的棋子颜色 WORD m_wCurrentUser; //当前玩家 WORD m_wStepCount; //当前游戏步数 WORD m_wTimeUsed; //每步已用时 WORD m_wMoveToNullCount; //空步(只是单纯的移动棋子)数,用于判断和棋 WORD m_wFirstRunUser; //先行者 BYTE m_cbPlayStatus; //游戏开始后的状态 (2) 客户端变量 所在类:CGameView WORD m_wGamePlayer; //游戏人数 WORD m_wCurrentUser; //当前玩家 WORD m_wLimitTime; //总时间 WORD m_wStepLimitTime; //离超时还剩余的时间 WORD m_wTimeOutCount; //超时次数 bool m_isLimitTime; //是否限时 bool m_isDrawTime; //是否画限时 WORD m_wPeaceReqGapTime; //求和间隔时间 WORD m_wGiveUpReqGapTime; //认输间隔时间 WORD m_wStepCount; //游戏步数 bool m_isLookon; //是否旁观 bool m_isPeaceAnswered; //求和是否回应了 bool m_isGiveUpAnswered; //认输是否回应了 所在类:CgameView2pS(派生自CGameView) ChessboardView2pS m_chessboardView; //棋盘视图 BYTE m_cbColor[2]; //玩家执子颜色 COLORREF m_textColor; //聊天文字颜色 bool m_isOver[2]; //玩家是否完了 WORD m_wThinkTime[2]; //玩家思考时间 PEEP_3INFO *m_pPeep; //马灯结构指针 WORD m_wPeepCount; //马灯数量 WORD m_wOtherPeepCount; //其他人的马灯数量 WORD m_wTrapCount; //陷阱数量 BYTE m_cbPropsCount[5]; //各个道具可用数量 3.3.3消息结构 本软件消息结构包括游戏服务端消息结构和客户端消息结构,数据结构如下: (1)服务端消息结构设计 服务端消息结构分为主要分两部分定义,服务端消息定义和消息结构。 ¨ 消息定义 #define SUB_S_GAME_START 100 //游戏开始 #define SUB_S_MOVE_CHESS 101 //移动棋子 #define SUB_S_REGRET_REQ 102 //悔棋请求 #define SUB_S_REGRET_FAILE 103 //悔棋失败 #define SUB_S_REGRET_RESULT 104 //悔棋结果 #define SUB_S_PEACE_REQ 105 //和棋请求 #define SUB_S_PEACE_ANSWER 106 //和棋应答 #define SUB_S_GAME_END 107 //游戏结束 #define SUB_S_CHESS_MANUAL 108 //棋谱信息 #define SUB_S_REQ_SET_RULE 109 //请求设置 #define SUB_S_REQ_AGREE_RULE 110 //请求同意 #define SUB_S_OPEN_CHESS 111 //翻开棋子 #define SUB_S_FIRSTOPEN_CHESS 112 //未确定颜色时,第一次翻开棋子 #define SUB_S_CLOSE 114 //强退 #define SUB_S_GIVEUP_REQ 115 //认输 #define SUB_S_GIVEUP_ANSWER 116 //认输应答 #define SUB_S_CURRENT_USER 117 //指派谁走棋 #define SUB_S_GUESS 118 //猜谁先走 #define SUB_S_START_GUESS 119 //开始猜先 #define SUB_S_SOMEONEGUESS 120 //某人已经出手了 #define SUB_S_BREAK_END 121 //强退结束 #define SUB_S_PEACE_END 122 //和棋结束 #define SUB_S_NORMAL_END 123 //正常结束 #define SUB_S_GUESSING_END 124 //猜拳状态下结束 #define SUB_S_TIME_OUT 125 //玩家超时 #define SUB_S_MOVE_STILL 127 #define SUB_S_OPEN_PROPS 130 //翻开道具 #define SUB_S_USER_OVER 135 //玩家被吃光了 #define SUB_S_PROPS_RESTART 140 //重开 #define SUB_S_PROPS_BOMB 141 //炸弹 #define SUB_S_PROPS_PEEP 142 //走马灯 #define SUB_S_PROPS_TRAP 143 //陷阱 #define SUB_S_PROPS_LIMIT 144 //禁锢 #define SUB_S_PROPS_WINLOST 145 //胜负道具 #define SUB_S_OTHER_USER_PEEP 149 //其他玩家设置了马灯 #define SUB_S_NOT_ENOUGH_COIN 150 //金币不足 #define SUB_S_BUY_SUCCESS 151 //购买成功 #define SUB_S_REMOVE_LIMIT 160 //消除禁锢 #define SUB_S_IN_TRAP 161 //中陷阱 #define SUB_S_NO_EFFECT 162 #define SUB_S_MOVING_FOUND_TRAP 163 //移动棋子发现陷阱而无法移动 #define SUB_S_LAYPROPS_FOUND_TRAP 164 //放置道具发现陷阱而无法移动 ¨ 消息结构 struct ChessWithCoord { BYTE iBePeeped; BYTE jBePeeped; Chess chess; }; struct CHESS_COORD //棋子数组坐标 { BYTE i; BYTE j; }; struct TRAP { BYTE iTrap; BYTE jTrap; WORD wTrapUser; }; struct CMD_S_FirstOpenChess { BYTE i; //棋子数组下标 BYTE j; Chess chess; //棋子 WORD wCurrentUser; //当前玩家 WORD wOpenUser; WORD wOpenUserThinkTime; //翻棋玩家思考时间 }; struct CMD_S_OpenChess { BYTE i; //棋子数组下标 BYTE j; Chess chess; //棋子 WORD wCurrentUser; //当前玩家 WORD wOpenUser; WORD wOpenUserThinkTime; //翻棋玩家思考时间 }; struct CMD_S_OpenProps { BYTE i; // BYTE j; // Chess chess; // WORD wCurrentUser; // WORD wOpenUserThinkTime; //翻棋玩家思考时间 }; struct CMD_S_MoveChess { WORD wMoveUser; //移动棋子的玩家 BYTE iSrc; // BYTE jSrc; // BYTE iDst; // BYTE jDst; // WORD wCurrentUser; //当前玩家 WORD wMoveUserThinkTime; //翻棋玩家思考时间 }; struct CMD_S_StartGuess { WORD wGuessUser1; //猜先玩家一 WORD wGuessUser2; //猜先玩家二 }; struct CMD_S_SomeoneGuess { WORD wGuessUser; //已出手的玩家 }; struct CMD_S_Close { WORD wCloseUser; //强退玩家 }; struct CMD_S_PeaceRequest { WORD wPeaceRequestUser; //求和玩家 }; struct CMD_S_GiveUp { WORD wGiveupUser; //认输玩家 }; struct CMD_S_CurrentUser { WORD wCurrentUser; //服务器指定谁走下一步 }; typedef struct tagSystemAction { BYTE cbActionType; //系统帮走类型 BYTE iSrc; BYTE jSrc; BYTE iDst; //若cbActionType不等于ACTION_MOVE,此值作废 BYTE jDst; } SYSTEMACTION; struct CMD_S_TimeOut { WORD wTimeOutUser; WORD wThinkTime; WORD wCurrentUser; }; struct CMD_S_Guess { WORD wGuessUser1; //玩家一 WORD wGuessUser2; //玩家二 BYTE cbGuessUser1Type; //石头剪刀布其中之一 BYTE cbGuessUser2Type; //石头剪刀布其中之一 }; struct CMD_S_GuessResult { CMD_S_Guess guess; // WORD wWinner; //赢家椅子号 }; struct CMD_S_Over { WORD wOverUser; //被吃光棋子的玩家 }; struct CMD_S_BuySuccess { BYTE cbPropsType; //道具类型 }; struct CMD_S_Props_Restart { WORD wCurrentUser; //当前玩家 }; struct CMD_S_Props_Bomb { BYTE i; //被炸棋子数组下标 BYTE j; bool isNoBomb; //是否没有炸弹道具了 WORD wCurrentUser; //当前玩家 WORD wBombUser; //扔炸弹玩家 WORD wBeBombedUser; //被炸玩家 }; struct CMD_S_Props_Trap { BYTE iTrap; //陷阱下标 BYTE jTrap; bool isNoTrapProps; //是否没有陷阱道具了 WORD wTrapUser; //设置陷阱的玩家 WORD wCurrentUser; }; struct CMD_S_InTrap { WORD wMoveUser; //移动棋子的玩家 WORD wTrapUser; //设置陷阱的玩家 BYTE iSrc; // BYTE jSrc; // BYTE iDst; // BYTE
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服