Files
wnmj-normal/Servers/游戏组件/房卡牛牛/游戏服务器/GameLogic.h
2026-03-03 13:56:44 +08:00

65 lines
1.6 KiB
C++

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