#ifndef _NiuNiu_GameLogic_h__ #define _NiuNiu_GameLogic_h__ #pragma once #include "NN_CMD.h" //开牌结果; struct tagOpenCardRlt { uint8 cbMaxCard; //最大牌; uint8 cbCardType; //牌类型; uint8 cbSortCard[NN_MAX_COUNT]; //排序的牌; }; //游戏逻辑类; class CNNGameLogic { public: //构造函数; CNNGameLogic() { } //析构函数; virtual ~CNNGameLogic() { } public: //有效判断; static bool IsValidCard(const uint8 cbCard); //获取数值; static uint8 GetCardValue(const uint8 cbCard) { return cbCard&NN_MASK_VALUE; } //获取花色; static uint8 GetCardColor(const uint8 cbCard) { return cbCard&NN_MASK_COLOR; } //获取花色; static uint8 GetCardColorEx(const uint8 cbCard) { return (cbCard&NN_MASK_COLOR) >> 4; } public: //逻辑数值; uint8 GetLogicValue(uint8 cbCard); //排列扑克; void SortCardList(uint8 cbCardData[], uint8 cbCardCount); //删除扑克; bool RemoveCard(uint8 cbCardData[], uint8 cbCardCount, uint8 cbRemoveCard[], uint8 cbRemoveCount); public: //获取赢的番数; uint8 GetWinNiuFan(const uint8 cbCardType); //获取最大牌; uint8 GetMaxCard(const uint8 cbCardData[], const uint8 cbCardCount); //获取类型; uint8 GetCardType(const uint8 cbCardData[], const uint8 cbCardCount, uint8 cbSortCard[]); //对比扑克; bool CompareCard(const tagOpenCardRlt stFirstData, const tagOpenCardRlt stNextData); private: //是否是五花牛; bool IsWuHuaNiu(const uint8 cbCardData[], const uint8 cbCardCount); //是否是五小牛; bool IsWuXiaoNiu(const uint8 cbCardData[], const uint8 cbCardCount); //是否是炸弹; bool IsZhaDan(const BYTE cbCardData[], const BYTE cbCardCount); }; #endif // GameLogic_h__