GameLogic.h

#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值