GameLogic.h

来源:互联网 发布:php use namespace 编辑:程序博客网 时间:2024/06/05 05:42
#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
原创粉丝点击