Files
wnmj-normal/Classes/Games/NiuNiu/NN_GameLogic.h
2026-03-03 13:56:44 +08:00

62 lines
1.6 KiB
C++

#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__