#ifndef GAME_LOGIC_HEAD_FILE
#define GAME_LOGIC_HEAD_FILE
#pragma once
#include "Stdafx.h"
//
//排序类型
#define ST_ORDER 0 //大小排序
#define ST_COUNT 1 //数目排序
#define ST_VALUE 2 //数值排序
//
//分析结构
struct tagAnalyseResult
{
BYTE cbBlockCount[8]; //扑克数目
BYTE cbCardData[8][MAX_COUNT]; //扑克数据
};
//出牌结果
struct tagOutCardResult
{
BYTE cbCardCount; //扑克数目
BYTE cbResultCard[MAX_COUNT]; //结果扑克
};
//分布信息
struct tagDistributing
{
BYTE cbCardCount; //扑克数目
BYTE cbDistributing[15][13]; //分布信息
};
//
//游戏逻辑类
class CGameLogic
{
//变量定义
protected:
static const BYTE m_cbCardData[FULL_COUNT]; //扑克数据
//函数定义
public:
//构造函数
CGameLogic();
//析构函数
virtual ~CGameLogic();
//属性函数
public:
//获取数值
BYTE GetCardValue(BYTE cbCardData) { return cbCardData&MASK_VALUE; }
//获取花色
BYTE GetCardColor(BYTE cbCardData) { return cbCardData&MASK_COLOR; }
//类型函数
public:
//获取类型
BYTE GetCardType(const BYTE cbCardData[], BYTE cbCardCount,BYTE &cbStarLevel);
//控制函数
public:
//混乱扑克
VOID RandCardList(BYTE cbCardBuffer[], BYTE cbBufferCount);
//排列扑克
VOID SortCardList(BYTE cbCardData[], BYTE cbCardCount, BYTE cbSortType = ST_ORDER);
//删除扑克
bool RemoveCard(const BYTE cbRemoveCard[], BYTE cbRemoveCount, BYTE cbCardData[], BYTE cbCardCount);
//逻辑函数
public:
//有效判断
bool IsValidCard(BYTE cbCardData);
//逻辑数值
BYTE GetCardLogicValue(BYTE cbCardData);
//对比扑克
bool CompareCard(const BYTE cbFirstCard[], const BYTE cbNextCard[], BYTE cbFirstCount, BYTE cbNextCount);
//功能函数
public:
//分析扑克
VOID AnalysebCardData(const BYTE cbCardData[], BYTE cbCardCount, tagAnalyseResult & AnalyseResult);
//分析分布
VOID AnalysebDistributing(const BYTE cbCardData[], BYTE cbCardCount, tagDistributing & Distributing);
//出牌搜索
bool SearchOutCard(const BYTE cbHandCardData[], BYTE cbHandCardCount, const BYTE cbTurnCardData[], BYTE cbTurnCardCount, tagOutCardResult & OutCardResult);
//内部函数
private:
//构造扑克
BYTE MakeCardData(BYTE cbValueIndex, BYTE cbColorIndex);
//是否连牌
bool IsStructureLink(const BYTE cbCardData[], BYTE cbCardCount, BYTE cbCellCount);
};
//
#endif
#define GAME_LOGIC_HEAD_FILE
#pragma once
#include "Stdafx.h"
//
//排序类型
#define ST_ORDER 0 //大小排序
#define ST_COUNT 1 //数目排序
#define ST_VALUE 2 //数值排序
//
//分析结构
struct tagAnalyseResult
{
BYTE cbBlockCount[8]; //扑克数目
BYTE cbCardData[8][MAX_COUNT]; //扑克数据
};
//出牌结果
struct tagOutCardResult
{
BYTE cbCardCount; //扑克数目
BYTE cbResultCard[MAX_COUNT]; //结果扑克
};
//分布信息
struct tagDistributing
{
BYTE cbCardCount; //扑克数目
BYTE cbDistributing[15][13]; //分布信息
};
//
//游戏逻辑类
class CGameLogic
{
//变量定义
protected:
static const BYTE m_cbCardData[FULL_COUNT]; //扑克数据
//函数定义
public:
//构造函数
CGameLogic();
//析构函数
virtual ~CGameLogic();
//属性函数
public:
//获取数值
BYTE GetCardValue(BYTE cbCardData) { return cbCardData&MASK_VALUE; }
//获取花色
BYTE GetCardColor(BYTE cbCardData) { return cbCardData&MASK_COLOR; }
//类型函数
public:
//获取类型
BYTE GetCardType(const BYTE cbCardData[], BYTE cbCardCount,BYTE &cbStarLevel);
//控制函数
public:
//混乱扑克
VOID RandCardList(BYTE cbCardBuffer[], BYTE cbBufferCount);
//排列扑克
VOID SortCardList(BYTE cbCardData[], BYTE cbCardCount, BYTE cbSortType = ST_ORDER);
//删除扑克
bool RemoveCard(const BYTE cbRemoveCard[], BYTE cbRemoveCount, BYTE cbCardData[], BYTE cbCardCount);
//逻辑函数
public:
//有效判断
bool IsValidCard(BYTE cbCardData);
//逻辑数值
BYTE GetCardLogicValue(BYTE cbCardData);
//对比扑克
bool CompareCard(const BYTE cbFirstCard[], const BYTE cbNextCard[], BYTE cbFirstCount, BYTE cbNextCount);
//功能函数
public:
//分析扑克
VOID AnalysebCardData(const BYTE cbCardData[], BYTE cbCardCount, tagAnalyseResult & AnalyseResult);
//分析分布
VOID AnalysebDistributing(const BYTE cbCardData[], BYTE cbCardCount, tagDistributing & Distributing);
//出牌搜索
bool SearchOutCard(const BYTE cbHandCardData[], BYTE cbHandCardCount, const BYTE cbTurnCardData[], BYTE cbTurnCardCount, tagOutCardResult & OutCardResult);
//内部函数
private:
//构造扑克
BYTE MakeCardData(BYTE cbValueIndex, BYTE cbColorIndex);
//是否连牌
bool IsStructureLink(const BYTE cbCardData[], BYTE cbCardCount, BYTE cbCellCount);
};
//
#endif