|
- #ifndef CMD_GAME_Pooker_HEAD_FILE
- #define CMD_GAME_Pooker_HEAD_FILE
-
- //////////////////////////////////////////////////////////////////////////
- //服务定义
- //游戏属性
-
- //////////////////////////////////////////////////////////////////////////
- //数目定义
- #pragma pack(1)
- #define MAX_COUNT_Poker 27 //最大数目
- #define FULL_COUNT_Poker 108 //全牌数目
-
- //////////////////////////////////////////////////////////////////////////
-
- //数值掩码
- #define MASK_COLOR 0xF0 //花色掩码
- #define MASK_VALUE 0x0F //数值掩码
- //
- //扑克类型
- #define CT_ERROR 0 //错误类型
- #define CT_SINGLE 1 //单牌类型
- #define CT_DOUBLE 2 //对子类型
- #define CT_THREE 3 //三条类型
- #define CT_DOUBLE_LINK 4 //对连类型//334455
- #define CT_THREE_LINK 5 //三连类型//555666777
- #define CT_SHUNZI 6 //顺子类型
- #define CT_BOMB 7 //炸弹类型
- #define CT_BOMB_3W 8 //3王炸弹
- #define CT_BOMB_TW 9 //天王炸弹
- #define CT_BOMB_LINK 10 //排炸类型 N线M连
- #define CT_BOMB_XIAN 11 //N付N线类型
- //
- ////////////////////////////////////////////////////////////////////////////
- ////状态定义
- //
- ////游戏状态
- //#define GS_SK_FREE GS_FREE //等待开始
- //#define GS_SK_PLAYING GS_PLAYING //游戏状态
- //
- ////////////////////////////////////////////////////////////////////////////
- ////命令定义
- //
- //#define SUB_S_GAME_START 100 //游戏函数
- //#define SUB_S_OUT_CARD 101 //用户出牌
- //#define SUB_S_PASS_CARD 102 //用户放弃
- //#define SUB_S_GAME_END 103 //游戏结束
- //#define SUB_S_TRUSTEE 104 //用户托管
- //#define SUB_S_SWITCH 105 //用户调换
-
- /* 前端->后台*/
- #define SUB_C_TRUSTEE_Poker 1 //用户 托管
- #define SUB_C_OPERATE_CALLBACK_Poker 150 //用户操作
- #define SUB_S_HINT_RESULT_Poker 151 //获取提示
-
- /*后台->前端*/
-
- #define SUB_S_GAME_START_Poker 250 //游戏开始
- #define SUB_S_OUT_BROADCAST_Poker 251 //出牌广播
- #define SUB_S_OPERATE_Poker 252 //操作通知
- #define SUB_S_GAME_END_Poker 253 //游戏结束
- #define SUB_S_GAME_JiangJin_Poker 254 //奖金变更
- #define SUB_S_TEAMMATE_HANDCARD_Poker 255 //通知队友手牌
- #define SUB_S_HINT_RESULT 256 //提示
-
- #define SUB_S_PANGGUAN_Poker 200
- #define SUB_S_TRUSTEE_Poker 1 //托管广播
- //发牌方式
- enum DealCardType{
- OneCardDeal = 0,
- ThreeCardDeal = 1,
- sixCardDeal = 2
- };
- // 操作掩码 后面用到
- enum OPERATE_MASK : WORD
- {
- OPERATE_MASK_NULL_Poker = 0x0000, //默认
- OPERATE_MASK_HINT_Poker = 0x0001, //提示
- OPERATE_MASK_NOOUT_Poker = 0x0002, //要不起
- OPERATE_MASK_OUT_Poker = 0x0004, //出牌
- OPERATE_MASK_PASS_Poker = 0x0008, //不出
- };
- //2 双癞子 1 单癞子 0 无癞子
- enum MagicMode{
- NoHaveMagic = 0,
- OneMagicMode,
- TwoMagicMode
-
- };
- //设置
- struct CMD_S_GameConfig_Poker
- {
- WORD wSubGameID; //100 双扣
- int wDiScore; //底分1
- WORD wFanFei; //房费(0房间创建者,1打牌者平摊)
- WORD wIpLimit; //IP限制(0限制,1不限制);
- WORD wPlayCountRule; //一次玩的局数(8局?16局?)
- WORD RoomId; //房间ID
- WORD IsOwner; //是否房主
- WORD wHadPlayCount; //当前局数
- TCHAR sPrivateTableID[LEN_PRIVATE_TABLE_ID];// 数字ID
- BYTE bDuoLai; //2 大小王 1 大王 0 无癞子
- WORD HaveBoomScore; //是否有炸弹奖金 1 有 0 没有
- BYTE PeoplesNum; //玩家人数
- int tmp2; //纸牌 发牌模式 0 1张 1 3张 2 6张
-
- bool ToString(TCHAR* pBuffer, int iLen)
- {
- if (sizeof(CMD_S_GameConfig_Poker) * 16 > iLen) return false;
- return true;
- }
- };
- //开局
- struct CMD_S_GameStart_SK
- {
- WORD wCurrentUser; //当前玩家(应该是第一个出牌的玩家吧)
- int lCellScore[4]; //玩家积分
- BYTE cbCardData[4][MAX_COUNT_Poker];//扑克列表
- BYTE cbPartnerCardData[MAX_COUNT_Poker];//队友扑克
- BYTE bTrustee; //是否托管
- BYTE cbStartRandCard; //随机扑克
- UINT userSortID[4]; //排序后的位置
- BYTE cbCurrPlay; //当前局数
- bool ToString(TCHAR* pBuffer, int iLen)
- {
- #ifdef _UNICODE
- CString StrCards;
- for (int i = 0; i < MAX_COUNT_Poker; i++)
- {
- CString tmp;
- tmp.Format(_T(",%02x"), cbCardData[i]);
- StrCards += tmp;
- }
- _snwprintf(pBuffer, iLen, TEXT("游戏开始->当前局数:%d,随机牌:%d,换桌顺序:%d,%d,%d,%d,玩家总积分:%d,%d,%d,%d 玩家手牌=%s")
- , cbCurrPlay, cbStartRandCard, userSortID[0], userSortID[1], userSortID[2], userSortID[3], lCellScore[0], lCellScore[1], lCellScore[2], lCellScore[3], StrCards);
- #else
- _snwprintf(pBuffer, iLen, TEXT("游戏开始->当前局数:%d,明牌:%d,换桌顺序:%d,%d,%d,%d,玩家总积分:%d,%d,%d,%d")
- , cbCurrPlay, cbStartRandCard, userSortID[0], userSortID[1], userSortID[2], userSortID[3], lCellScore[0], lCellScore[1], lCellScore[2], lCellScore[3]);
- #endif
- //StringCchCat(pBuffer, iLen / sizeof(TCHAR), tempcard);
- return true;
- }
- };
-
- //托管
- struct CMD_C_Trustee_SK
- {
- BYTE cbTrustee; //是否托管
- WORD wChairID; //托管用户
- };
- //客户端 发过来的操作
- struct CMD_C_OPERATE_CALLBACK_SK
- {
- WORD wOperateType; //操作掩码
- BYTE cbCardType; //出牌牌型
- BYTE cbJokerReplacePoker[4]; //癞子替换牌
- BYTE cbCardData[27]; //出牌扑克
- BYTE LianxianInfo; //告诉后台连线信息
-
- bool ToString(TCHAR* pBuffer, int iLen)
- {
- #ifdef _UNICODE
- CString CardS;
- for (int i = 0; i < MAX_COUNT_Poker;i++)
- {
- if (cbCardData[i]==0)
- {
- break;
- }
- CString tmp;
- tmp.Format(L"0x%02x,", cbCardData[i]);
- CardS += tmp;
- }
- _snwprintf(pBuffer, iLen, TEXT("客户端操作: 操作掩码=%d 出牌牌型=%d 癞子替换牌=[%d %d %d %d] 出牌扑克[%s] 特殊牌信息=%d")
- , wOperateType, cbCardType, cbJokerReplacePoker[0], cbJokerReplacePoker[1], cbJokerReplacePoker[2], cbJokerReplacePoker[3], CardS,LianxianInfo);
- #else
- _snwprintf(pBuffer, iLen, TEXT("客户端操作: 操作掩码=%d 出牌牌型=%d 癞子替换牌=[%d %d %d %d] 特殊牌信息=%d")
- , wOperateType, cbCardType, cbJokerReplacePoker[0], cbJokerReplacePoker[1], cbJokerReplacePoker[2], cbJokerReplacePoker[3],LianxianInfo);
- #endif
- //StringCchCat(pBuffer, iLen / sizeof(TCHAR), tempcard);
- return true;
- }
- };
- //出牌广播
- struct CMD_S_Out_Broadcast_SK
- {
- WORD wOutCardUser; //出牌用户
- WORD cbOperateType; //操作类型
- WORD cbCardType; //出牌牌型
- BYTE cbJokerReplacePoker[4];//替换癞子的牌
- BYTE cbOutCardData[27]; //出牌扑克
- BYTE cbIsFreeOut; //是否自由出牌
- BYTE cbIsTrusteeOut; //是否托管出牌
- BYTE cbLeftCount; //剩余牌数
- BYTE cbRanking[4]; //当前名次
- BYTE LianXianInfo; //标示 特殊牌 线 和连 等信息
- bool ToString(TCHAR* pBuffer, int iLen)
- {
- #ifdef _UNICODE
-
- _snwprintf(pBuffer, iLen, TEXT("出牌广播: 操作类型=%d 操作掩码=%d 出牌牌型=%d 替换癞子的牌=[%d %d %d %d] 是否自由出牌=%d cbLeftCount=%d 当前名次=[%d %d %d %d] 特殊牌信息 =%d")
- , wOutCardUser, cbOperateType, cbCardType, cbJokerReplacePoker[0], cbJokerReplacePoker[1], cbJokerReplacePoker[2], cbJokerReplacePoker[3], cbIsFreeOut, cbLeftCount, cbRanking[0], cbRanking[1], cbRanking[2], cbRanking[3], LianXianInfo);
- #else
- _snwprintf(pBuffer, iLen, TEXT("出牌广播: 操作类型=%d 操作掩码=%d 出牌牌型=%d 替换癞子的牌=[%d %d %d %d] 是否自由出牌=%d cbLeftCount=%d 当前名次=[%d %d %d %d] 特殊牌信息 =%d")
- , wOutCardUser, cbOperateType, cbCardType, cbJokerReplacePoker[0], cbJokerReplacePoker[1], cbJokerReplacePoker[2], cbJokerReplacePoker[3], cbIsFreeOut, cbLeftCount, cbRanking[0], cbRanking[1], cbRanking[2], cbRanking[3], LianXianInfo);
- #endif
- //StringCchCat(pBuffer, iLen / sizeof(TCHAR), tempcard);
- return true;
- }
- };
-
- struct CMD_S_Operate_SK
- {
- WORD wOperateUser; //操作用户
- WORD wOperateType; //操作掩码
- BYTE cbOptTime; //操作时间(秒)
- BYTE cbIsFreeOut; //是否自由出牌
- BYTE LianXianInfo; //上一个玩家的 特殊信息
- bool ToString(TCHAR* pBuffer, int iLen)
- {
- #ifdef _UNICODE
-
- _snwprintf(pBuffer, iLen, TEXT("操作提示: 用户=%d 操作掩码=%d 操作时间=%d 是否自动出牌=%d")
- , wOperateUser, wOperateType, cbOptTime, cbIsFreeOut);
- #else
- _snwprintf(pBuffer, iLen, TEXT("操作提示: 用户=%d 操作掩码=%d 操作时间=%d 是否自动出牌=%d")
- , wOperateUser, wOperateType, cbOptTime, cbIsFreeOut);
- #endif
- //StringCchCat(pBuffer, iLen / sizeof(TCHAR), tempcard);
- return true;
- }
- };
- struct CMD_S_StatusPlay_SK
- {
- CMD_S_GameConfig_Poker gameConfig; //游戏配置
- INT lUserTmpScore[4]; //临时积分。本轮玩家的积分
- BYTE leftTime; //未开始设置 255
- WORD wchairId; //解散申请人
- BYTE options[4]; //解散状态
- //游戏变量
- WORD wBankerUser; //本局游戏庄家
- WORD wCurrentUser; //当前用户
- BYTE cbCurrPlayCount; //当前局数
- BYTE cbTotaPlayCount; //总局数
- BYTE leftOptTime; //剩余操作时间---
- BYTE cbOutCardData[4][27]; //玩家出牌
- WORD cbcardType; //操作类型 我的出牌类型
- BYTE cbCardCount[4]; //扑克数目
- BYTE cbCardData[4][27]; //玩家手牌
- WORD cbOtherOperateType[4]; //别人的操作类型(不出,要不起)
- BYTE cbDiscardType; //应该是上一家出牌类型
- BYTE cbReplaceCard[4 * 4]; //癞子替换牌值
- BYTE cbRankIndex[4]; //名次排行,游戏中谁先打完排名
- BYTE cbTeamCardData[27]; //展示队友牌,重连时自己已打完
- BYTE cbTrusteeStatus[4]; //托管状态
- BYTE LeftMinPokerVal; //开局的那张名牌
- BYTE LianXianInfo; //标示 特殊牌 线 和连 等信息
- short UserGongXianScore[4]; //玩家贡献分
- };
-
- struct CMD_S_GameEnd_SK
- {
- BYTE cbEndType; //结束类型 操作类型(1常规结束 2解散 )1
- BYTE cbCardCount[4]; //玩家手牌数目
- BYTE cbCardData[4][27]; //玩家手牌值
- BYTE cbRank[4]; //名次排行
- BYTE cbWinorLose[4]; //玩家单局输赢情况(0,输,1赢)
- BYTE cbWinorLoseCount[4]; //输赢次数
- short nWanJiaScore[4]; //本局积分
- short GongxianScore[4]; //贡献分(炸弹分)
- short AwardScore[4]; //奖金分(双扣分)
- INT cbWanJiaTotalScore[4]; //总积分
- BYTE bFinish; //是否结束本轮
- BYTE playGameNum; //当前局数
- INT lGameScoreDetail[16 * 4]; //流水详情
- };
-
-
- typedef struct _HitStruct_
- {
- BYTE cbHintLogicCardData[MAX_COUNT_Poker];
- BYTE cbCardCount;
- WORD cbCardType;
- _HitStruct_(){
- ZeroMemory(cbHintLogicCardData, MAX_COUNT_Poker);
- cbCardType = CT_ERROR;
- cbCardCount = 0;
- };
- }HitStruct;
-
- // 出牌信息
- typedef struct _OutCard_
- {
- WORD wOutCardUser; //出牌用户
- BYTE cbOutCardData[MAX_COUNT_Poker]; //出牌扑克
- BYTE cbOutCardCount; //出牌数目
- BYTE cbOutCardType; //出牌类型
- BYTE cbOutCardValue; //牌眼(用于比较大小)
- }OutCard;
-
- struct CMD_S_Hint_Result_Poker
- {
- BYTE cbHintCardData[27]; //提示扑克(长度应该是27吧)
- WORD cbCardType; //出牌牌型
- };
-
-
- struct CMD_S_JiangJin
- {
- BYTE wOperateUser; //出牌大牌的用户
- BYTE cbCardData[27]; //出牌数据
- BYTE cbCardType; //出牌类型
- short Scores[4]; //各个玩家的奖金变更
- short TureScores[4]; //变更后的真实贡献分数
-
- bool ToString(TCHAR* pBuffer, int iLen)
- {
- #ifdef _UNICODE
- CString CardS;
- for (int i = 0; i < MAX_COUNT_Poker; i++)
- {
- if (cbCardData[i] == 0)
- {
- break;
- }
- CString tmp;
- tmp.Format(L"0x%02x,", cbCardData[i]);
- CardS += tmp;
- }
- _snwprintf(pBuffer, iLen, TEXT("奖金提示: 用户=%d 出牌数据=[%s ]出牌类型=%d 奖金变更[%d %d %d %d ] 变更后的[%d %d %d %d]")
- , wOperateUser, CardS, cbCardType, Scores[0], Scores[1], Scores[2], Scores[3], TureScores[0], TureScores[1], TureScores[2], TureScores[3]);
- #else
- _snwprintf(pBuffer, iLen, TEXT("奖金提示: 用户=%d 出牌数据=[%s ]出牌类型=%d 奖金变更[%d %d %d %d ] 变更后的[%d %d %d %d]")
- , wOperateUser, CardS, cbCardType, Scores[0], Scores[1], Scores[2], Scores[3], TureScores[0], TureScores[1], TureScores[2], TureScores[3]);
- #endif
- //StringCchCat(pBuffer, iLen / sizeof(TCHAR), tempcard);
- return true;
- }
-
- };
- struct CMD_S_PangGuan_Poler
- {
- CMD_S_GameConfig_Poker gameConfig;
- INT lUserTmpScore[4]; //玩家积分
- BYTE GameStatus; //当前状态
- WORD wBankerUser; //本局游戏庄家
- WORD wCurrentUser; //当前用户
- BYTE cbCurrPlayCount; //当前局数
- BYTE cbTotaPlayCount; //总局数
- BYTE leftOptTime;//剩余操作时间
- WORD cbOtherOperate[4]; //他人操作
- BYTE cbOutCardData[4][27]; //玩家出牌
- WORD cbCardType; //出牌类型
- WORD cbOtherOperateType[4];//别人的操作类型(不出,要不起)
- BYTE cbDiscardType;//应该是上一家出牌类型
- BYTE cbReplaceCard[4 * 4];//癞子替换牌值
- BYTE cbRankIndex[4];//名次排行,游戏中谁先打完排名
- BYTE cbCardCount[4]; //扑克数目
- BYTE cbCardData[4][27]; //玩家手牌
- BYTE cbTrusteeStatus[4]; //托管状态 0正常 1托管
- BYTE LeftMinPokerVal; //开局的那张名牌
- short UserGongXianScore[4]; //玩家贡献分
- };
- //用户托管
- struct CMD_S_Trustee_Poler
- {
- BYTE cbTrustee; //是否托管
- WORD wChairID; //托管用户
- };
- //队友手牌
- struct CMD_S_TEAMMATE_HANDCARD
- {
- WORD wTeammateChairID; //队友座位
- BYTE cbCardData[27]; //队友手牌
- };
-
- #pragma pack()
- #endif
|