游戏软件设计说明

上传人:wan****21 文档编号:128996445 上传时间:2022-08-02 格式:DOC 页数:27 大小:153.01KB
收藏 版权申诉 举报 下载
游戏软件设计说明_第1页
第1页 / 共27页
游戏软件设计说明_第2页
第2页 / 共27页
游戏软件设计说明_第3页
第3页 / 共27页
资源描述:

《游戏软件设计说明》由会员分享,可在线阅读,更多相关《游戏软件设计说明(27页珍藏版)》请在装配图网上搜索。

1、XXXXXX游戏软件设计说明1引言1.1标识本文档是棋牌游戏XXXXXXXXXXXX游戏软件设计说明文档,阅读对象是产品开发,测试和维护人员。1.2范围本文档包括软件产品的系统设计和详细设计两大部分,系统设计部分主要描述产品的模块划分,相互依赖关系和交互接口,详细设计部分通过包图、类图、状态图等描述系统功能的具体实现方法和流程。1.3定义和缩写1.“本软件”或“本产品”指: (1)XXXXXXXXXXXX游戏软件V1.0。(2)相关的说明性书面材料、说明书以及电子文档(如果有的话)。(3)XXXXXX公司许可您使用的本软件的相关的更新程序,或者修改版(如果有的话)。 2.“使用”指对本软件安装

2、、设置或者以其他方式对本软件做功能性使用。3.“用途”指您使用本软件的限制和范围。4.“XXXXXXXXXXXX游戏软件”缩写“XXXXXXXXXXXX”。2参考献文【1】软件设计说明:Survivor之新东方客栈软件设计说明 来源于。3 结构设计3.1 服务端模块分解XXXXXXXXXXXX服务端共分为四个模块:游戏棋盘模块(Chessboard),棋盘服务模块(ChessboardSink2pSuper)游戏桌子模块(TableFrameSink),游戏服务器管理模块(GameServerManager)。Module 1Module 3Module 4 ChessboardTableFr

3、ameManagerGameServerManagerModule 2ChessboardSink2pSuper图 3-1-1-1 服务端模块划分 模块1 游戏棋盘模块 说明本模块定义了棋子数组和各个子的走法,包括车、马、炮这几个特殊棋子的走法和吃子规则(CanRookMove、CanHorseMove、CanCannonEat)并提供一个对外部游戏判断棋子是否可行可吃的总接口Action,针对车、马、炮这三个特殊的棋子,还分别提供了SearchRookPath、 SearchHorsePath、SearchCannonEatPath这三个搜寻可走路径的函数3.1.2 模块 2 棋盘服务模块

4、说明本模块接手了模块3的功能,定义了服务端游戏控制流程,包括游戏初始化、等待、属性、开始游戏,游戏结束和结算,分别有各自的控制逻辑和交互界面。3.1.3 模块 3 游戏桌子模块 说明 本模定义了棋盘服务的建立,使用棋盘服务控制游戏流程。3.1.4模块 4游戏服务器管理模块 说明 本模块定义了服务端的建立,主要成员函数包括:创建游戏桌(CreateTableFrameSink)。3.2 客户端模块分解XXXXXXXXXXXX客户端共分四个模块:游戏对话框模块(GameClientDlg),游戏视图模块(CGameView),游戏棋盘模块(ChessboardView),猜拳模块(GuessVie

5、w)Module 3Module 2ChessboardViewGameViewModule 1GameClientDlgModule 4GuessView图 3-2-1-1 客户端模块划分3.2.1 模块 1游戏对话框模块 说明本模块定义了客户端游戏控制流程,如:游戏设置(OnGameOptionSet)用于功能设置,网络消息(OnGameMessage)用于发送用户游戏消息,游戏场景(OnGameSceneMessage)用于发送游戏过程状态 模块 2 游戏场景模块 说明本模块定义了游戏进行时的场景,游戏场景包括区域的绘制、场景信息贴图,走棋动画。3.2.3 模块 3游戏逻辑模块 说明本模

6、块定义了棋子数组和各个子的走法,包括车、马、炮这几个特殊棋子的走法和吃子规则(CanRookMove、CanHorseMove、CanCannonEat)并提供一个对外部游戏判断棋子是否可行可吃的总接口Action,针对车、马、炮这三个特殊的棋子,还分别提供了SearchRookPath、 SearchHorsePath、SearchCannonEatPath这三个搜寻可走路径的函数 模块4猜拳模块 说明本模块定义了猜拳游戏场景的渲染,猜拳动画,用于决定哪个玩家先行棋3.3全局数据结构说明3.3.1 常量(1) 服务端常量WORD g_wGamePlayer; /游戏人数WORD g_wGam

7、eMode; /游戏模式ITableFrame * m_pITableFrame; /框架接口const tagGameServiceOption * m_pGameServiceOption; /配置参数static const enStartMode m_GameStartMode; /开始模式ChessboardSink * m_pChessboardSink; /棋盘服务(服务端的网络消息处理和其他变量都交给棋盘服务)棋盘服务常量:static const BYTE m_cbBuyPropsBaseCoin5; /购买道具的基数static const BYTE m_cbPropsLi

8、mitBuyCount5; /限制购买道具数量 (2) 客户端常量CGameView * g_pGameView; /游戏视图CGuessView * g_pGuessView; /猜拳视图3.3.2 变量(1) 服务端变量(棋盘服务变量)所在类:ChessboardSink2pSuperChessboard2pSuper m_chessboard; /棋盘LONG m_lPropsCostCoin5; /道具花费LONG m_lBuyPropsCoin2; /各个玩家购买道具的金币数bool m_isBoughtProps25; /玩家是否购买了某个道具BYTE m_cbBoughtProp

9、sCount25; /购买了某个道具的数量BYTE m_cbFreePropsCount25; /玩家获得某个免费道具的数量WORD m_wBeLimitedCount2; /玩家被人使用了禁锢道具的数量BYTE m_cbPeepCount2; /玩家使用马灯的数量PEEP *m_pPeep2; /玩家拥有的马灯结构(包括透视周围三颗棋子的坐标)WORD m_wFreePropsUsedCount25; /免费道具使用数量bool m_isUsedBoughtProps2; /是否使用了购买的道具WORD m_wBuyPropsUsedCount25; /购买道具使用数量WORD m_wBeU

10、sedPropsCount25; /被道具作用次数LONG m_lUserUsedPropsCoin2; /各个玩家使用道具的金币数CMD_S_Guess m_guess; /猜谁先行Chess m_clientChessArr66; /对应的客户端的棋盘数组Chess m_seizeChessArr216; /玩家吃子数组BYTE m_cbSeizeChessCount2; /玩家吃子数BYTE m_cbPromisePeaceCount2; /玩家被答应和棋的数量BYTE m_cbPromiseGiveupCount2; /玩家被答应认输的数量WORD m_wBegPeaceStatus2

11、; /玩家求和状态WORD m_wBegGiveupStatus2; /请求认输状态WORD m_wTimeOutCount2; /玩家超时次数WORD m_wThinkTime2; /思考时间(可变)bool m_isOver2; /玩家是否被吃光棋子或者主动认输bool m_isRevokeOffLine2; /是否掉线后回来BYTE m_cbColor2; /玩家所执的棋子颜色 WORD m_wCurrentUser; /当前玩家WORD m_wStepCount; /当前游戏步数WORD m_wTimeUsed; /每步已用时WORD m_wMoveToNullCount; /空步(只

12、是单纯的移动棋子)数,用于判断和棋WORD m_wFirstRunUser; /先行者BYTE m_cbPlayStatus; /游戏开始后的状态 (2) 客户端变量所在类:CGameViewWORD m_wGamePlayer; /游戏人数WORD m_wCurrentUser; /当前玩家WORD m_wLimitTime; /总时间WORD m_wStepLimitTime; /离超时还剩余的时间WORD m_wTimeOutCount; /超时次数bool m_isLimitTime; /是否限时bool m_isDrawTime; /是否画限时WORD m_wPeaceReqGapT

13、ime; /求和间隔时间WORD m_wGiveUpReqGapTime; /认输间隔时间WORD m_wStepCount; /游戏步数bool m_isLookon; /是否旁观bool m_isPeaceAnswered; /求和是否回应了bool m_isGiveUpAnswered; /认输是否回应了所在类:CgameView2pS(派生自CGameView)ChessboardView2pS m_chessboardView; /棋盘视图BYTE m_cbColor2; /玩家执子颜色COLORREF m_textColor; /聊天文字颜色bool m_isOver2; /玩家是

14、否完了WORD m_wThinkTime2; /玩家思考时间PEEP_3INFO *m_pPeep; /马灯结构指针WORD m_wPeepCount; /马灯数量WORD m_wOtherPeepCount; /其他人的马灯数量WORD m_wTrapCount; /陷阱数量BYTE m_cbPropsCount5; /各个道具可用数量3.3.3消息结构本软件消息结构包括游戏服务端消息结构和客户端消息结构,数据结构如下:(1)服务端消息结构设计服务端消息结构分为主要分两部分定义,服务端消息定义和消息结构。 消息定义#define SUB_S_GAME_START 100/游戏开始#defin

15、e 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 10

16、9 /请求设置#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 SU

17、B_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 /翻开道具#de

18、fine 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_ENOU

19、GH_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 ChessWithCoordBYTE iBePeeped;BYTE jBePeep

20、ed;Chess chess;struct CHESS_COORD /棋子数组坐标BYTE i;BYTE j;struct TRAPBYTE iTrap;BYTE jTrap;WORD wTrapUser;struct CMD_S_FirstOpenChessBYTE i; /棋子数组下标BYTE j; Chess chess; /棋子WORD wCurrentUser; /当前玩家WORD wOpenUser;WORD wOpenUserThinkTime; /翻棋玩家思考时间;struct CMD_S_OpenChessBYTE i; /棋子数组下标BYTE j; Chess chess;

21、 /棋子WORD wCurrentUser; /当前玩家WORD wOpenUser;WORD wOpenUserThinkTime; /翻棋玩家思考时间;struct CMD_S_OpenPropsBYTE i; /BYTE j; /Chess chess; /WORD wCurrentUser; /WORD wOpenUserThinkTime; /翻棋玩家思考时间;struct CMD_S_MoveChessWORD wMoveUser; /移动棋子的玩家BYTE iSrc; /BYTE jSrc; /BYTE iDst; /BYTE jDst; /WORD wCurrentUser;

22、/当前玩家WORD wMoveUserThinkTime; /翻棋玩家思考时间;struct CMD_S_StartGuessWORD wGuessUser1; /猜先玩家一WORD wGuessUser2; /猜先玩家二;struct CMD_S_SomeoneGuessWORD wGuessUser; /已出手的玩家;struct CMD_S_CloseWORD wCloseUser; /强退玩家;struct CMD_S_PeaceRequestWORD wPeaceRequestUser; /求和玩家;struct CMD_S_GiveUpWORD wGiveupUser; /认输玩家

23、;struct CMD_S_CurrentUserWORD wCurrentUser; /服务器指定谁走下一步;typedef struct tagSystemActionBYTE cbActionType; /系统帮走类型BYTE iSrc;BYTE jSrc;BYTE iDst; /若cbActionType不等于ACTION_MOVE,此值作废BYTE jDst; SYSTEMACTION;struct CMD_S_TimeOutWORD wTimeOutUser;WORD wThinkTime;WORD wCurrentUser;struct CMD_S_GuessWORD wGues

24、sUser1; /玩家一WORD wGuessUser2; /玩家二BYTE cbGuessUser1Type; /石头剪刀布其中之一BYTE cbGuessUser2Type; /石头剪刀布其中之一;struct CMD_S_GuessResultCMD_S_Guess guess; /WORD wWinner; /赢家椅子号;struct CMD_S_OverWORD wOverUser; /被吃光棋子的玩家;struct CMD_S_BuySuccessBYTE cbPropsType; /道具类型;struct CMD_S_Props_RestartWORD wCurrentUser;

25、 /当前玩家;struct CMD_S_Props_BombBYTE i; /被炸棋子数组下标BYTE j;bool isNoBomb; /是否没有炸弹道具了WORD wCurrentUser; /当前玩家WORD wBombUser; /扔炸弹玩家WORD wBeBombedUser; /被炸玩家;struct CMD_S_Props_TrapBYTE iTrap; /陷阱下标BYTE jTrap;bool isNoTrapProps; /是否没有陷阱道具了WORD wTrapUser; /设置陷阱的玩家WORD wCurrentUser;struct CMD_S_InTrapWORD wM

26、oveUser; /移动棋子的玩家WORD wTrapUser; /设置陷阱的玩家BYTE iSrc; /BYTE jSrc; /BYTE iDst; /BYTE jDst; /WORD wCurrentUser;/当前玩家WORD wMoveUserThinkTime; /移动玩家思考时间;struct CMD_S_Props_Limitbool isNoLimitProps; /是否没有禁锢道具了WORD wLimitUser; /使用限制道具的玩家WORD wBeLimitUser; /被限制玩家WORD wCurrentUser; /当前玩家;struct CMD_S_RemoveLi

27、mitWORD wBeLimitUser; /被限制玩家;struct CMD_S_No_EffectBYTE cbPropsType;/*/struct tagGameAwardData/奖券奖励条件(局数)WORD wGameNumberOfCrystalAwardCRYSTALAWARD_CONDICTION_COUNT;/服务费的百分比作为奖券奖励BYTE cbPercentOfServiceCRYSTALAWARD_CONDICTION_COUNT;/积分等级short sScoreForLevelSCORE_LEVEL_COUNT;/奖券加成百分比BYTE cbPercentOfC

28、rystalAwardSCORE_LEVEL_COUNT;struct CMD_S_Guessing_GameEndWORD wBreakUser; /猜拳状态下强退的玩家;struct CMD_S_Break_GameEnd_2pWORD wBreakUser; /强退玩家LONG lFleeGoldCoin; /强退玩家被扣除金币数LONG lFleeScore; /强退玩家被扣除分数LONG lWinnerGameGoldCoin;/赢家赢得的游戏金币LONG lGameRevenue; /服务费用LONG lWinnerGameScore; /赢家游戏分数LONG lWinnerGam

29、eExp; /赢家经验值BYTE cbSeizeChessCount2; /玩家吃子数;struct CMD_S_Peace_GameEnd_2pLONG lGameRevenue; BYTE cbSeizeChessCountGAME_PLAYER_2P;struct CMD_S_Normal_GameEnd_2pWORD wWinner; /其中之一赢家LONG lWinnerGameGoldCoin;/赢家赢得的游戏金币LONG lGameRevenue; /服务费用(金币)LONG lWinnerGameScore; /赢家赢得的游戏分数LONG lWinnerGameExp; /赢家

30、经验值LONG lLoserGameExp; /输家经验值BYTE cbSeizeChessCount2; /玩家吃子数;struct PEEPBYTE iPeep;BYTE jPeep;WORD wPeepUser;ChessWithCoord chessWithCoord3;struct OTHER_PEEPBYTE iPeep;BYTE jPeep;WORD wPeepUser;struct CMD_S_Props_PeepBYTE iPeep; /走马灯所在数组下标BYTE jPeep;bool isNoPeepProps; /是否没有马灯道具了WORD wCurrentUser; /

31、当前玩家ChessWithCoord chesswithcoord3;/走马灯透视周围三颗棋子;struct CMD_S_OtherUser_PeepBYTE iPeep;BYTE jPeep;WORD wPeepUser; /使用马灯的玩家WORD wCurrentUser; /当前玩家;struct CMD_S_StatusFree_2p_SuperWORD wGamePlayer; /玩家数量WORD wGameMode;/游戏模式,0为经典场,1为超级场tagGameRuleInfo GameRuleInfo; /游戏规则tagGameAwardData GameAwardData;

32、/奖券奖励数据LONG lCellScore; /房间倍数void *pServerData; /服务器端的数据BYTE cbBuyPropsBaseCoin5;/道具购买基数,乘以房间倍率就是道具价格BYTE cbPropsLimitBuyCount5;/道具限制购买数量;struct CMD_S_StatusGuess_2p_SuperWORD wGamePlayer;WORD wGameMode; /游戏模式,0为经典场,1为超级场tagGameRuleInfo GameRuleInfo; /游戏规则tagGameAwardData GameAwardData; /奖券奖励数据LONG

33、lCellScore; /房间倍数bool isUser1Guess; /玩家数量bool isUser2Guess;bool isRevokeOffLine; /是否是断线重连BYTE cbBuyPropsBaseCoin5;/道具购买基数,乘以房间倍率就是道具价格BYTE cbPropsLimitBuyCount5; /道具限制购买数量;struct CMD_S_StatusPlay_2p_SuperWORD wGamePlayer; /玩家数量WORD wGameMode;/游戏模式,超级场为1,普通场为0tagGameRuleInfo GameRuleInfo; /游戏规则tagGameAwardData GameAwardData; /奖券奖励数据LONG lCellScore; /房间倍数WORD wCurrentUser;/当前玩家WORD w

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!