




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、XXXXXX游戲軟件設(shè)計(jì)說明1 引言1.1 標(biāo)識(shí)本文檔是棋牌游戲 XXXXXXXXXXX游X戲軟件設(shè)計(jì)說明文檔,閱讀對(duì)象是產(chǎn)品開發(fā),測(cè)試 和維護(hù)人員。1.2 圍本文檔包括軟件產(chǎn)品的系統(tǒng)設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩大部分,系統(tǒng)設(shè)計(jì)部分主要描述產(chǎn)品的 模塊劃分,相互依賴關(guān)系和交互接口,詳細(xì)設(shè)計(jì)部分通過包圖、類圖、狀態(tài)圖等描述系統(tǒng) 功能的具體實(shí)現(xiàn)方法和流程。1.3 定義和縮寫1. “本軟件”或“本產(chǎn)品”指:(1) XXXXXXXXXXXX游戲軟件 V1.0 。(2) 相關(guān)的說明性書面材料、說明書以及電子文檔(如果有的話) 。(3) XXXXXX 公司許可您使用的本軟件的相關(guān)的更新程序,或者修改版(如果有的話)。
2、2. “使用”指對(duì)本軟件安裝、設(shè)置或者以其他方式對(duì)本軟件做功能性使用。3. “用途”指您使用本軟件的限制和圍。4. “ XXXXXXXXXXX游X戲軟件”縮寫“ XXXXXXXXXXX”。X2 參考獻(xiàn)文【1】軟件設(shè)計(jì)說明:Survivor 之新客棧軟件設(shè)計(jì)說明 來源于 docin. 。3 結(jié)構(gòu)設(shè)計(jì)3.1 服務(wù)端模塊分解XXXXXXXXXXXX服務(wù)端共分為四個(gè)模塊:游戲棋盤模塊(Chessboard ),棋盤服務(wù)模塊ChessboardSink2pSuper )游戲桌子模塊 ( TableFrameSink ),游戲服務(wù)器管理 模塊GameServerManager)。Module 1Modul
3、e 2Module 3Module 4圖 3-1-1-1 服務(wù)端模塊劃分3.1.1 模塊 1 游戲棋盤模塊 說明本模塊定義了棋子數(shù)組和各個(gè)子的走法,包括車、馬、炮這幾個(gè)特殊棋子的走法和吃 子規(guī)則( CanRookMove、CanHorseMove、 CanCannonEat)并提供一個(gè)對(duì)外部游戲判斷棋子是 否 可 行可 吃 的總 接口 Action ,針 對(duì)車 、 馬、 炮這 三 個(gè) 特 殊 的棋 子, 還 分 別 提供 了 SearchRookPath 、 SearchHorsePath 、 SearchCannonEatPath 這三個(gè)搜尋可走路徑的函數(shù)3.1.2 模塊 2 棋盤服務(wù)模塊
4、說明本模塊接手了模塊 3 的功能,定義了服務(wù)端游戲控制流程,包括游戲初始化、等待、 屬性、開始游戲,游戲結(jié)束和結(jié)算,分別有各自的控制邏輯和交互界面。3.1.3 模塊 3 游戲桌子模塊 說明本模定義了棋盤服務(wù)的建立,使用棋盤服務(wù)控制游戲流程。3.1.4 模塊 4 游戲服務(wù)器管理模塊 說明本模塊定義了服務(wù)端的建立,主要成員函數(shù)包括:創(chuàng)建游戲桌 ( CreateTableFrameSink )。3.2 客戶端模塊分解XXXXXXXXXXXX客戶端共分四個(gè)模塊:游戲?qū)υ捒蚰K(GameClientDlg ),游戲視圖模塊( CGameView),游戲棋盤模塊(ChessboardView ),猜拳模塊
5、GuessView)Module 3 Module 2 Module 4Module 1圖 3-2-1-1 客戶端模塊劃分3.2.1 模塊 1 游戲?qū)υ捒蚰K 說明本模塊定義了客戶端游戲控制流程,如:游戲設(shè)置(OnGameOptionSet)用于功能設(shè)置 , 網(wǎng) 絡(luò) 消 息 ( OnGameMessage) 用 于 發(fā) 送 用 戶 游 戲 消 息 , 游 戲 場(chǎng) 景 ( OnGameSceneMessag)e 用于發(fā)送游戲過程狀態(tài)3.2.2 模塊 2 游戲場(chǎng)景模塊 說明本模塊定義了游戲進(jìn)行時(shí)的場(chǎng)景,游戲場(chǎng)景包括區(qū)域的繪制、場(chǎng)景信息貼圖,走棋動(dòng)畫。3.2.3 模塊 3 游戲邏輯模塊 說明本模塊定
6、義了棋子數(shù)組和各個(gè)子的走法,包括車、馬、炮這幾個(gè)特殊棋子的走法和吃子規(guī)則( CanRookMove、CanHorseMove、 CanCannonEat)并提供一個(gè)對(duì)外部游戲判斷棋子是 否 可 行可 吃 的總 接口 Action ,針 對(duì)車 、 馬、 炮這 三 個(gè)特 殊 的棋 子, 還分 別 提供 了 SearchRookPath 、 SearchHorsePath 、 SearchCannonEatPath 這三個(gè)搜尋可走路徑的函數(shù)3.2.4 模塊 4 猜拳模塊 說明本模塊定義了猜拳游戲場(chǎng)景的渲染,猜拳動(dòng)畫,用于決定哪個(gè)玩家先行棋3.3 全局?jǐn)?shù)據(jù)結(jié)構(gòu)說明3.3.1 常量(1) 服務(wù)端常量WO
7、RDg_wGamePlayer;WORDg_wGameMode;/游戲人數(shù)游戲模式ITableFrame* m_pITableFrame;const tagGameServiceOption* m_pGameServiceOption;static const enStartModem_GameStartMode;ChessboardSink * m_pChessboardSink; / 消息處理和其他變量都交給棋盤服務(wù))/框架接口/配置參數(shù)/開始模式棋盤服務(wù)(服務(wù)端的網(wǎng)絡(luò)棋盤服務(wù)常量: static const BYTE static const BYTE (2) 客戶端常量 CGameVi
8、ew CGuessViewm_cbBuyPropsBaseCoin5; / m_cbPropsLimitBuyCount5; /* g_pGameView;/* g_pGuessView;/購(gòu)買道具的基數(shù)限制購(gòu)買道具數(shù)量游戲視圖猜拳視圖3.3.2 變量(1) 服務(wù)端變量 ( 棋盤服務(wù)變量 ) 所在類: ChessboardSink2pSuper Chessboard2pSuper m_chessboard; LONG m_lPropsCostCoin5; LONG m_lBuyPropsCoin2; bool m_isBoughtProps25;BYTE m_cbBoughtPropsCoun
9、t25;BYTE m_cbFreePropsCount25; WORD m_wBeLimitedCount2;BYTE m_cbPeepCount2;PEEP *m_pPeep2; /玩家擁有的馬燈結(jié)構(gòu)棋盤 道具花費(fèi) 各個(gè)玩家購(gòu)買道具的金幣數(shù) 玩家是否購(gòu)買了某個(gè)道具 購(gòu)買了某個(gè)道具的數(shù)量 玩家獲得某個(gè)免費(fèi)道具的數(shù)量 玩家被人使用了禁錮道具的數(shù)量 玩家使用馬燈的數(shù)量 ( 包括透視周圍三顆棋子的坐標(biāo) )免費(fèi)道具使用數(shù)量 是否使用了購(gòu)買的道具購(gòu)買道具使用數(shù)量被道具作用次數(shù)WORDm_wFreePropsUsedCount25;/bool m_isUsedBoughtProps2; /WORDm_wB
10、uyPropsUsedCount25;/WORDm_wBeUsedPropsCount25;/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;WORD m_wBegGiveupStatus2;WORD m_wTimeOutCount2;WO
11、RD m_wThinkTime2;bool m_isOver2; / bool m_isRevokeOffLine2;BYTE m_cbColor2;WORD m_wCurrentUser;WORD m_wStepCount;WORD m_wTimeUsed;WORD m_wMoveToNullCount; /WORD m_wFirstRunUser;BYTE m_cbPlayStatus;(2) 客戶端變量 所在類: CGameView/各個(gè)玩家使用道具的金幣數(shù)猜誰(shuí)先行對(duì)應(yīng)的客戶端的棋盤數(shù)組玩家吃子數(shù)組 玩家吃子數(shù) 玩家被答應(yīng)和棋的數(shù)量玩家被答應(yīng)認(rèn)輸?shù)臄?shù)量玩家求和狀態(tài)請(qǐng)求認(rèn)輸狀態(tài) 玩家超時(shí)次
12、數(shù) 思考時(shí)間(可變)玩家是否被吃光棋子或者主動(dòng)認(rèn)輸是否掉線后回來玩家所執(zhí)的棋子顏色當(dāng)前玩家 當(dāng)前游戲步數(shù) 每步已用時(shí)空步(只是單純的移動(dòng)棋子)數(shù),用于判斷和棋/先行者/游戲開始后的狀態(tài)/ 游戲人數(shù) 當(dāng)前玩家 / 總時(shí)間 / 離超時(shí)還剩余的時(shí)間 / 超時(shí)次數(shù) / 是否限時(shí) / 是否畫限時(shí) 求和間隔時(shí)間 / 認(rèn)輸間隔時(shí)間 游戲步數(shù) 是否旁觀 求和是否回應(yīng)了 認(rèn)輸是否回應(yīng)了棋盤視圖 玩家執(zhí)子顏色 聊天文字顏色 玩家是否完了 玩家思考時(shí)間 馬燈結(jié)構(gòu)指針馬燈數(shù)量其他人的馬燈數(shù)量WORDm_wGamePlayer;WORDm_wCurrentUser; /WORDm_wLimitTime;WORDm_wS
13、tepLimitTime;WORDm_wTimeOutCount;boolm_isLimitTime;boolm_isDrawTime;WORD m_wPeaceReqGapTime; / WORDm_wGiveUpReqGapTime;WORDm_wStepCount;/bool m_isLookon; / boolm_isPeaceAnswered;/boolm_isGiveUpAnswered;/所在類: CgameView2pS(派生自 CGameView) ChessboardView2pS m_chessboardView; / BYTE m_cbColor2; / COLORRE
14、F m_textColor;/bool m_isOver2; /WORDm_wThinkTime2;/PEEP_3INFO *m_pPeep; / WORD m_wPeepCount; / WORD m_wOtherPeepCount; /WORDBYTEm_wTrapCount;m_cbPropsCount5;/陷阱數(shù)量各個(gè)道具可用數(shù)量3.3.3 消息結(jié)構(gòu)本軟件消息結(jié)構(gòu)包括游戲服務(wù)端消息結(jié)構(gòu)和客戶端消息結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)如下:(1) 服務(wù)端消息結(jié)構(gòu)設(shè)計(jì) 服務(wù)端消息結(jié)構(gòu)分為主要分兩部分定義,服務(wù)端消息定義和消息結(jié)構(gòu)。消息定義#define SUB_S_GAME_START100/ 游戲開始#def
15、ine SUB_S_MOVE_CHESS101/ 移動(dòng)棋子#define SUB_S_REGRET_REQ102/ 悔棋請(qǐng)求#define SUB_S_REGRET_FAILE103/ 悔棋失敗#define SUB_S_REGRET_RESULT104/悔棋結(jié)果#define SUB_S_PEACE_REQ105/和棋請(qǐng)求#define SUB_S_PEACE_ANSWER106/和棋應(yīng)答#define SUB_S_GAME_END107/游戲結(jié)束#define SUB_S_CHESS_MANUAL108/棋譜信息#define SUB_S_REQ_SET_RULE109/請(qǐng)求設(shè)置#defi
16、ne SUB_S_REQ_AGREE_RULE 110/請(qǐng)求同意#define SUB_S_OPEN_CHESS111/翻開棋子#define SUB_S_FIRSTOPEN_CHESS 112/未確定顏色時(shí),第一次翻開棋子#define SUB_S_CLOSE 114/強(qiáng)退#define SUB_S_GIVEUP_REQ115/認(rèn)輸#define SUB_S_GIVEUP_ANSWER116/認(rèn)輸應(yīng)答#define SUB_S_CURRENT_USER117/指派誰(shuí)走棋#define SUB_S_GUESS 118/猜誰(shuí)先走#define SUB_S_START_GUESS119/開始猜先#
17、define SUB_S_SOMEONEGUESS120/某人已經(jīng)出手了#define SUB_S_BREAK_END121/強(qiáng)退結(jié)束#define SUB_S_PEACE_END122/和棋結(jié)束#define SUB_S_NORMAL_END123/正常結(jié)束#define SUB_S_GUESSING_END124/猜拳狀態(tài)下結(jié)束#define SUB_S_TIME_OUT125/玩家超時(shí)#define SUB_S_MOVE_STILL127#define SUB_S_OPEN_PROPS130/翻開道具#define SUB_S_USER_OVER135/玩家被吃光了#define SUB
18、_S_PROPS_RESTART140/重開#define SUB_S_PROPS_BOMB141/炸彈#define SUB_S_PROPS_PEEP142/走馬燈#define SUB_S_PROPS_TRAP143/陷阱#define SUB_S_PROPS_LIMIT144/禁錮#define SUB_S_PROPS_WINLOST145/勝負(fù)道具其他玩家設(shè)置了馬燈#define SUB_S_OTHER_USER_PEEP 149 /金幣不足/購(gòu)買成功/消除禁錮/中陷阱/ 移動(dòng)棋子發(fā)現(xiàn)陷阱而無法移動(dòng)/ 放置道具發(fā)現(xiàn)陷阱而無法移動(dòng)#define SUB_S_NOT_ENOUGH_COIN
19、 150#define SUB_S_BUY_SUCCESS151#define SUB_S_REMOVE_LIMIT160#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 消息結(jié)構(gòu)struct ChessWithCoordBYTEiBePeeped;BYTEjBePeeped;Chesschess;struct CHESS_COORD / 棋子數(shù)組坐標(biāo)BYTEi;BYTEj;struct TRAP
20、BYTEiTrap;BYTEjTrap;WORD wTrapUser; ;struct CMD_S_FirstOpenChessBYTEi; /棋子數(shù)組下標(biāo)BYTEj;Chesschess; /棋子WORDwCurrentUser; /當(dāng)前玩家WORDwOpenUser;WORDwOpenUserThinkTime; /翻棋玩家思考時(shí)間;struct CMD_S_OpenChessBYTEBYTEi;j;/棋子數(shù)組下標(biāo)Chesschess;/棋子WORDwCurrentUser;/當(dāng)前玩家WORDwOpenUser;WORDwOpenUserThinkTime; /翻棋玩家思考時(shí)間;BYTEi
21、;/BYTEj;/Chesschess;/WORDwCurrentUser;/WORDwOpenUserThinkTime; /struct CMD_S_OpenProps翻棋玩家思考時(shí)間;struct CMD_S_MoveChessWORDwMoveUser; /移動(dòng)棋子的玩家BYTEiSrc; /BYTEjSrc; /BYTEiDst; /BYTEjDst; /WORDwCurrentUser;/ 當(dāng)前玩家WORDwMoveUserThinkTime; /翻棋玩家思考時(shí)間;struct CMD_S_StartGuess 猜先玩家一猜先玩家二WORDwGuessUser1;/WORDwGue
22、ssUser2;/;struct CMD_S_SomeoneGuessWORDwGuessUser;/struct CMD_S_CloseWORDwCloseUser;/;已出手的玩家強(qiáng)退玩家struct CMD_S_PeaceRequest求和玩家WORD wPeaceRequestUser; / ;struct CMD_S_GiveUp認(rèn)輸玩家WORD wGiveupUser; /;struct CMD_S_CurrentUserWORDwCurrentUser;/服務(wù)器指定誰(shuí)走下一步;typedef struct tagSystemActionBYTEcbActionType;/系統(tǒng)幫走
23、類型BYTEiSrc;BYTEjSrc;BYTEiDst; /若cbActionType不等于 ACTION_MOV,E此值作廢BYTEjDst; SYSTEMACTION; struct CMD_S_TimeOutWORDWORDWORDwTimeOutUser; wThinkTime; wCurrentUser;struct CMD_S_GuessWORDWORDBYTEBYTEwGuessUser1;wGuessUser2;cbGuessUser1Type;cbGuessUser2Type;/玩家一玩家二 石頭剪刀布其中之一 石頭剪刀布其中之一;struct CMD_S_GuessRes
24、ultCMD_S_GuessWORDguess; wWinner;/贏家椅子號(hào);struct CMD_S_OverWORDwOverUser;/被吃光棋子的玩家;struct CMD_S_BuySuccessBYTEcbPropsType;/道具類型;struct CMD_S_Props_RestartWORDwCurrentUser;/當(dāng)前玩家;struct CMD_S_Props_BombBYTEi;/被炸棋子數(shù)組下標(biāo)j;BYTEisNoBomb; / wCurrentUser; / wBombUser; / wBeBombedUser; /是否沒有炸彈道具了當(dāng)前玩家 扔炸彈玩家被炸玩家;
25、struct CMD_S_Props_LimitboolWORDWORDWORD;struct CMD_S_RemoveLimitWORD;struct CMD_S_No_EffectBYTEisNoLimitProps; / wLimitUser; / wBeLimitUser; / wCurrentUser; /wBeLimitUser; /cbPropsType;是否沒有禁錮道具了使用限制道具的玩家被限制玩家當(dāng)前玩家被限制玩家boolWORDWORDWORD;struct CMD_S_Props_TrapBYTEiTrap; /陷阱下標(biāo)BYTEjTrap;boolisNoTrapProp
26、s; /是否沒有陷阱道具了WORDwTrapUser; /設(shè)置陷阱的玩家WORDwCurrentUser;struct CMD_S_InTrapWORDwMoveUser;/移動(dòng)棋子的玩家WORDwTrapUser;/設(shè)置陷阱的玩家BYTEiSrc;/BYTEjSrc;/BYTEiDst;/BYTEjDst;/WORDwCurrentUser;/ 當(dāng)前玩家WORDwMoveUserThinkTime; /移動(dòng)玩家思考時(shí)間*/ struct tagGameAwardData/ 獎(jiǎng)券獎(jiǎng)勵(lì)條件 ( 局?jǐn)?shù))WORD wGameNumberOfCrystalAwardCRYSTALAWARD_CONDI
27、CTION_COUNT; / 服務(wù)費(fèi)的百分比作為獎(jiǎng)券獎(jiǎng)勵(lì)BYTE cbPercentOfServiceCRYSTALAWARD_CONDICTION_COUNT;/ 積分等級(jí)short sScoreForLevelSCORE_LEVEL_COUNT;/ 獎(jiǎng)券加成百分比BYTE cbPercentOfCrystalAwardSCORE_LEVEL_COUNT;struct CMD_S_Guessing_GameEndWORD wBreakUser; /猜拳狀態(tài)下強(qiáng)退的玩家;struct CMD_S_Break_GameEnd_2pWORDwBreakUser;/強(qiáng)退玩家LONGlFleeGold
28、Coin; /強(qiáng)退玩家被扣除金幣數(shù)LONGlFleeScore; /強(qiáng)退玩家被扣除分?jǐn)?shù)LONGlWinnerGameGoldCoin;/贏家贏得的游戲金幣LONGlGameRevenue;/服務(wù)費(fèi)用LONGlWinnerGameScore;/贏家游戲分?jǐn)?shù)LONGlWinnerGameExp;/贏家經(jīng)驗(yàn)值BYTEcbSeizeChessCount2;/玩家吃子數(shù);struct CMD_S_Peace_GameEnd_2pLONG lGameRevenue;BYTE;cbSeizeChessCountGAME_PLAYER_2P;struct CMD_S_Normal_GameEnd_2pWORD
29、wWinner; /其中之一贏家LONGlWinnerGameGoldCoin;/贏家贏得的游戲金幣LONGlGameRevenue; /服務(wù)費(fèi)用(金幣)LONGlWinnerGameScore; /贏家贏得的游戲分?jǐn)?shù)LONGlWinnerGameExp; /贏家經(jīng)驗(yàn)值LONGlLoserGameExp; /輸家經(jīng)驗(yàn)值BYTEcbSeizeChessCount2; /玩家吃子數(shù)struct PEEPBYTEiPeep;BYTEjPeep;WORDChessWithCoord;struct OTHER_PEEPBYTEBYTEWORD;struct CMD_S_Props_Peep BYTEBY
30、TEboolWORDChessWithCoord;wPeepUser;chessWithCoord3;iPeep;jPeep;wPeepUser;iPeep; /jPeep;isNoPeepProps; /wCurrentUser; /chesswithcoord3;/走馬燈所在數(shù)組下標(biāo)是否沒有馬燈道具了當(dāng)前玩家走馬燈透視周圍三顆棋子struct CMD_S_OtherUser_PeepBYTEiPeep;BYTEjPeep;WORDwPeepUser;WORDwCurrentUser;struct CMD_S_StatusFree_2p_SuperWORDwGamePlayer;WORDwG
31、ameMode;/使用馬燈的玩家/當(dāng)前玩家/玩家數(shù)量游戲模式, 0為經(jīng)典場(chǎng), 1為超級(jí)場(chǎng)tagGameRuleInfo GameRuleInfo; / 游戲規(guī)則 tagGameAwardData GameAwardData; / 獎(jiǎng)券獎(jiǎng)勵(lì)數(shù)據(jù) LONG lCellScore; / 房間倍數(shù) void *pServerData; / 服務(wù)器端的數(shù)據(jù) BYTE cbBuyPropsBaseCoin5;/ 道具購(gòu)買基數(shù),乘以房間倍率就是道具價(jià)格BYTEcbPropsLimitBuyCount5;/道具限制購(gòu)買數(shù);struct CMD_S_StatusGuess_2p_SupertagGameRule
32、Info GameRuleInfo; tagGameAwardData GameAwardData; LONG lCellScore; /WORD wGamePlayer;WORD wGameMode; /游戲模式, 0為經(jīng)典場(chǎng), 1為超級(jí)場(chǎng) / 游戲規(guī)則 /獎(jiǎng)券獎(jiǎng)勵(lì)數(shù)據(jù)房間倍數(shù)boolisUser1Guess; /玩家數(shù)量boolisUser2Guess;boolisRevokeOffLine; /是否是斷線重連BYTE cbBuyPropsBaseCoin5;/BYTE cbPropsLimitBuyCount5;struct CMD_S_StatusPlay_2p_SuperWORDwG
33、amePlayer;WORDwGameMode;/道具購(gòu)買基數(shù),乘以房間倍率就是道具價(jià)格/ 道具限制購(gòu)買數(shù)量/ 玩家數(shù)量游戲模式,超級(jí)場(chǎng)為 1,普通場(chǎng)為 0tagGameRuleInfo GameRuleInfo; tagGameAwardData GameAwardData; / LONG lCellScore; / WORD wCurrentUser; WORD wStepCount; / BYTE cbColorGAME_PLAYER_2P;/ 游戲規(guī)則 獎(jiǎng)券獎(jiǎng)勵(lì)數(shù)據(jù) 房間倍數(shù) / 當(dāng)前玩家 走棋步數(shù)Chess ChessArrV_COUNT_2P_SH_COUNT_2P_S;Chess
34、lostChessArrGAME_PLAYER_2PSEIZE_CHESS_COUNT_2P;WORD wThinkTimeGAME_PLAYER_2P; / 思考時(shí)間WORDboolboolBYTEBYTEBYTEBYTEBYTEboolBYTE 以房間倍率就是道具價(jià)格BYTE量;wTimeRemaining; isRevokeOffLine; / isLimitedGAME_PLAYER_2P;cbPeepCount; / cbOtherPeepCount; / cbTrapCount; / cbPropsCount5; / cbBoughtPropsCount5;/ isOverGAME
35、_PLAYER_2P;cbBuyPropsBaseCoin5;/cbPropsLimitBuyCount5;/是否是斷線重連馬燈數(shù)量其他人的馬燈數(shù)量陷阱數(shù)量道具數(shù)量購(gòu)買過的道具數(shù)量道具購(gòu)買基數(shù),乘道具限制購(gòu)買數(shù)(2) 客戶端消息結(jié)構(gòu)設(shè)計(jì) 客戶端消息結(jié)構(gòu)主要也分兩部分定義,客戶端消息定義和消息結(jié)構(gòu)。消息定義#define SUB_C_MOVE_CHESS#define SUB_C_TIME_OUT#define SUB_C_REGRET_REQ#define SUB_C_REGRET_ANSWER#define SUB_C_PEACE_REQ1/ 移動(dòng)棋子2/ 走棋超時(shí)3/ 悔棋請(qǐng)求4/ 悔棋應(yīng)
36、答5/ 和棋請(qǐng)求#define SUB_C_PEACE_ANSWER6/ 和棋應(yīng)答#define SUB_C_GIVEUP_REQ7/ 認(rèn)輸請(qǐng)求#define SUB_C_GIVEUP_ANSWER8/認(rèn)輸應(yīng)答#define SUB_C_OPEN_CHESS10/翻開棋子#define SUB_C_GUESS12/猜誰(shuí)先行#define SUB_C_GUESS_TIMEOUT13/猜棋超時(shí)#define SUB_C_BUY_PROPS25/購(gòu)買道具#define SUB_C_PROPS_RESTART30/使用重開#define SUB_C_PROPS_BOMB31/使用炸彈#define S
37、UB_C_PROPS_PEEP32/使用走馬燈#define SUB_C_PROPS_TRAP33/使用陷阱#define SUB_C_PROPS_LIMIT34/使用禁錮#define SUB_C_PROPS_WINLOST 消息結(jié)構(gòu)/ 翻開棋子struct CMD_C_OpenChessBYTE i;35/勝負(fù)道具BYTE j;struct CMD_C_GuessBYTE cbGuessType; /石頭剪刀布其中之一struct CMD_C_TimeOutSYSTEMACTIONsystemAction;/系統(tǒng)幫走;/ 移動(dòng)棋子struct CMD_C_MoveChessBYTEiSrc
38、;/ 棋子數(shù)組下標(biāo)BYTEjSrc;/ 棋子數(shù)組下標(biāo)BYTEiDst;/ 棋子數(shù)組下標(biāo)BYTEjDst;/ 棋子數(shù)組下標(biāo);typedef CMD_C_MoveChess CMD_C_PropsToProps, CMD_C_PropsToChess; / 悔棋響應(yīng)struct CMD_C_RegretAnswerBYTEcbApprove;/ 同意標(biāo)志;/ 和棋響應(yīng)struct CMD_C_PeaceAnswerWORD wPeaceRequestUser; /BYTE cbApprove;struct CMD_C_GiveUpAnswer求和玩家 / 同意標(biāo)志認(rèn)輸玩家是否同意;/ 定制規(guī)則st
39、ruct CMD_C_CustomizeRulttagGameRuleInfo;/ 購(gòu)買道具struct CMD_C_BuyPropsBYTE;struct CMD_C_Props_BombBYTEBYTE;struct CMD_C_Props_PeepBYTEBYTE;struct CMD_C_Props_TrapBYTEBYTE;struct CMD_C_Props_LimitWORDGameRuleInfo;/ 游戲規(guī)則cbPropsType; /i; / j;i; / j;i; / j;wBeLimitedUser; /道具類型被炸棋子棋盤下標(biāo)走馬燈棋盤下標(biāo)陷阱棋盤下標(biāo)被限制的玩家;W
40、ORD wGiveupUser; / bool isAgree; /4 依賴關(guān)系說明4.1 模塊間的依賴關(guān)系4.1.1 服務(wù)端模塊 3 (游戲桌子模塊)依賴于模塊 4 (游戲服務(wù)器管理模塊) ,模塊 3 (游戲桌子模 塊)初始化工作在模塊 4 (游戲服務(wù)器管理模塊)中完成。模塊 2 (棋盤服務(wù)模塊)依賴于模塊 3 (游戲桌子類) ,接手模塊 3 的游戲控制流 程。模塊 2 (游戲桌子類)依賴于模塊1 (棋盤模塊) ,主要反映在游戲過程中的行棋規(guī)則,如棋的大小比較,用戶能不能行棋。模塊 2 (棋盤服務(wù)模塊)和模塊 4 (游戲服務(wù)器管理模塊)沒有直接依賴關(guān)系,也沒 有消息傳遞和調(diào)用的關(guān)系。模塊 1
41、 (棋盤模塊)和模塊 4 (游戲服務(wù)器管理模塊)沒有直接依賴關(guān)系,也沒有消 息傳遞和調(diào)用的關(guān)系。4.1.2 客戶端模塊 1 (游戲?qū)υ捒蚰K)依賴于模塊 2 (游戲視圖模塊) ,主要反映在游戲主界面, 背景區(qū)域的貼圖,以及行棋時(shí)的動(dòng)畫。模塊 1 (游戲?qū)υ捒蚰K)依賴于模塊 4 (猜拳模塊) ,主要反映在猜拳界面,背景區(qū) 域的貼圖,以及猜拳時(shí)的動(dòng)畫。模塊 2 (游戲視圖模塊)依賴于模塊 3 (棋盤視圖模塊) ,主要反映在游戲過棋盤界面 的描繪,游戲界面的點(diǎn)擊,棋盤規(guī)則和死子的繪畫。模塊 1 (游戲?qū)υ捒蚰K)和模塊 3 (游戲視圖模塊)有沒有直接依賴關(guān)系。兩者通 過模塊 2 間接的有消息傳遞和
42、調(diào)用。當(dāng)用戶通過猜拳界面進(jìn)入游戲界面時(shí),模塊2(游戲視圖模塊)依賴與模塊 4(猜拳模塊),主要體現(xiàn)在猜拳結(jié)果決定游戲進(jìn)行時(shí)誰(shuí)先翻棋4.2 進(jìn)程間的依賴關(guān)系4.2.1 服務(wù)端進(jìn)程 4創(chuàng)建進(jìn)程 3,進(jìn)程 3創(chuàng)建進(jìn)程 2,進(jìn)程 2 需要調(diào)用進(jìn)程 1中的方法獲取當(dāng)前狀態(tài) 和屬性,來完成自身一些功能, 。如判斷客戶端發(fā)過來的游戲規(guī)則信息是否符合規(guī)定的。4.2.2 客戶端掉線情況下進(jìn)程 1 創(chuàng)建進(jìn)程 2,正常情況下進(jìn)程 1 創(chuàng)建進(jìn)程 4,進(jìn)程 4 創(chuàng)建進(jìn)程 2,進(jìn) 程 2 創(chuàng)建進(jìn)程 3,. 進(jìn)程 1的網(wǎng)絡(luò)邏輯交給進(jìn)程 2或進(jìn)程 4 處理,如道具的使用,進(jìn)程 2 的 行棋邏輯交給進(jìn)程 3 處理,如行棋的判斷
43、。進(jìn)程 2 作為進(jìn)程 1 的視圖模塊,負(fù)責(zé)顯示界面 與動(dòng)畫。進(jìn)程 3 作為進(jìn)程 2 的附屬顯示模塊,負(fù)責(zé)棋盤的顯示,棋子動(dòng)畫和死子的顯示。 進(jìn)程 4 作為游戲入口模塊,負(fù)責(zé)進(jìn)程 2游戲開始時(shí)的行棋次序5 接口說明5.1 服務(wù)端模塊接口GetGameStartMode(); 開始模式IsUserPlaying(WORD wChairID);游戲狀態(tài)OnEventGameStart();游戲開始OnEventGameEnd(WORD wChairID, IServerUserItem * pIServerUserItem, BYTE cbReason);游戲結(jié)束SendGameScene(WORD
44、 wChiarID, IServerUserItem * pIServerUserItem, BYTE bGameStatus, bool bSendSecret);游戲狀態(tài)消息處理。OnGameMessage(WORD wSubCmdID, const void * pDataBuffer, WORD wDataSize, IServerUserItem * pIServerUserItem);游戲過程消息。5.2 客戶端模塊接口OnGameOptionSet(); 游戲設(shè)置OnGameMessage(WORD wSubCmdID, const void * pBuffer, WORD wD
45、ataSize); 游戲網(wǎng)絡(luò)消息OnGameSceneMessage(BYTE cbGameStatus, bool bLookonOther, const void * pBuffer, WORD wDataSize);游戲狀態(tài)消息OnSubGameStart(const void * pBuffer, WORD wDataSize); 開始游戲OnSubFirstOpenChess( const void *pBuffer, WORD wDataSize ); 未確定顏色時(shí),第一次翻開棋子OnSubOpenChess( const void *pBuffer, WORD wDataSize
46、 ); 翻開棋子OnSubMoveChess( const void *pBuffer, WORD wDataSize ); 移動(dòng)棋子OnSubOpenProps( const void *pBuffer, WORD wDataSize ); 翻開道具OnSubPeaceReq( const void *pBuffer, WORD wDataSize ); 和棋請(qǐng)求OnSubCurrentUser( const void *pBuffer, WORD wDataSize ); 指派玩家走棋OnSubMoveStill(); 仍然是自己走棋OnSubTimeOut( const void *pB
47、uffer, WORD wDataSize ); 玩家超時(shí)OnSubPeaceAnswer( const void *pBuffer, WORD wDataSize ); 和棋應(yīng)答OnSubUserGiveUpReq( const void *pBuffer, WORD wDataSize ); 認(rèn)輸請(qǐng)求OnSubUserGiveUpAnswer( const void *pBuffer, WORD wDataSize ); 認(rèn)輸應(yīng)答OnSubBreakEnd( const void *pBuffer, WORD wDataSize ); 強(qiáng)退結(jié)束OnSubPeaceEnd( const vo
48、id *pBuffer, WORD wDataSize ); 和棋結(jié)束OnSubNormalEnd( const void *pBuffer, WORD wDataSize ); 正常結(jié)束OnSubGFUserOffline( const void *pBuffer, WORD wDataSize ); 玩家掉線OnSubUserOver( const void *pBuffer, WORD wDataSize ); 玩家完了OnSubNotEnoughCoin(); 金幣不足OnSubBuySuccess( const void *pBuffer, WORD wDataSize ); 購(gòu)買道具成功OnSubPropsPeep( const void *pBuffer, WORD wDataSize ); 自己使用馬燈道具OnSubOtherUserPeep( const void
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年休閑素食項(xiàng)目申請(qǐng)報(bào)告模板
- 成都師范學(xué)院《數(shù)學(xué)建模軟件》2023-2024學(xué)年第一學(xué)期期末試卷
- 游艇俱樂部運(yùn)營(yíng)經(jīng)理崗位面試問題及答案
- 箱包結(jié)構(gòu)設(shè)計(jì)師崗位面試問題及答案
- 2025屆山西省忻州一中、臨汾一中、精英中學(xué)、鄂爾多斯一中高二下化學(xué)期末質(zhì)量跟蹤監(jiān)視試題含解析
- 湖北省襄陽(yáng)市重點(diǎn)中學(xué)2025年高二下化學(xué)期末復(fù)習(xí)檢測(cè)模擬試題含解析
- 醫(yī)藥研發(fā)激勵(lì)管理辦法
- 景區(qū)游客垃圾管理辦法
- 法人帳戶透支管理辦法
- 醫(yī)院集中采購(gòu)管理辦法
- 安全教育培訓(xùn):實(shí)現(xiàn)安全文明施工
- 2025年云南普洱市墨江天下一雙文旅體育集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- GB/T 2423.102-2008電工電子產(chǎn)品環(huán)境試驗(yàn)第2部分:試驗(yàn)方法試驗(yàn):溫度(低溫、高溫)/低氣壓/振動(dòng)(正弦)綜合
- GB/T 18391.5-2009信息技術(shù)元數(shù)據(jù)注冊(cè)系統(tǒng)(MDR)第5部分:命名和標(biāo)識(shí)原則
- 第二季度護(hù)理紅黃警示及核心制度試題含答案
- 有機(jī)廢棄物資源化利用課件
- 住院患者身份確認(rèn)表
- 2023年度萬科集團(tuán)合格供應(yīng)商名錄
- 水合肼項(xiàng)目安全評(píng)價(jià)報(bào)告
- 新版機(jī)動(dòng)車檢驗(yàn)檢測(cè)機(jī)構(gòu)程序文件模板
- GB∕T 1001.1-2021 標(biāo)稱電壓高于1000V的架空線路絕緣子 第1部分:交流系統(tǒng)用瓷或玻璃絕緣子元件 定義、試驗(yàn)方法和判定準(zhǔn)則
評(píng)論
0/150
提交評(píng)論