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