150 lines
4.6 KiB
C
150 lines
4.6 KiB
C
|
|
#ifndef GAME_DDZ_LOGIC_HEAD_FILE
|
|||
|
|
#define GAME_DDZ_LOGIC_HEAD_FILE
|
|||
|
|
|
|||
|
|
#pragma once
|
|||
|
|
#include "Types.h"
|
|||
|
|
#include "Macro.h"
|
|||
|
|
#include "CardDefine.h"
|
|||
|
|
#include "DDZ_CMD.h"
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_ST_ORDER 1 //<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_ST_COUNT 2 //<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_ST_CUSTOM 3 //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_MASK_COLOR 0xF0 //<2F><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_MASK_VALUE 0x0F //<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_CT_ERROR 0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_CT_SINGLE 1 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_CT_DOUBLE 2 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_CT_THREE 3 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_CT_SINGLE_LINE 4 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_CT_DOUBLE_LINE 5 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_CT_THREE_LINE 6 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_CT_THREE_TAKE_ONE 7 //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
|
#define DDZ_CT_THREE_TAKE_TWO 8 //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
|
|||
|
|
#define DDZ_CT_FOUR_TAKE_ONE 9 //<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_CT_FOUR_TAKE_TWO 10 //<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_CT_BOMB_CARD 11 //ը<><D5A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define DDZ_CT_MISSILE_CARD 12 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
#define DDZ_ST_HIDE 100
|
|||
|
|
#define DDZ_ST_DEAL_CARD 101
|
|||
|
|
#define DDZ_ST_PASS 102
|
|||
|
|
#define DDZ_ST_CALL 103
|
|||
|
|
#define DDZ_ST_CLICK_CARD 104
|
|||
|
|
#define DDZ_ST_OUT_CARD 105
|
|||
|
|
#define DDZ_ST_LEFT_ONE_CARD 106
|
|||
|
|
#define DDZ_ST_WIN 107
|
|||
|
|
#define DDZ_ST_LOSE 108
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ṹ
|
|||
|
|
struct tagAnalyseResult
|
|||
|
|
{
|
|||
|
|
uint8 cbBlockCount[4]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
|
|||
|
|
uint8 cbCardData[4][DDZ_MAX_COUNT]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>
|
|||
|
|
struct tagOutCardResult
|
|||
|
|
{
|
|||
|
|
uint8 cbCardCount; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
|
|||
|
|
uint8 cbResultCard[DDZ_MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//<2F>ֲ<EFBFBD><D6B2><EFBFBD>Ϣ
|
|||
|
|
struct tagDistributing
|
|||
|
|
{
|
|||
|
|
uint8 cbCardCount; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
|
|||
|
|
uint8 cbDistributing[15][6]; //<2F>ֲ<EFBFBD><D6B2><EFBFBD>Ϣ
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
struct tagSearchCardResult
|
|||
|
|
{
|
|||
|
|
uint8 cbSearchCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
|||
|
|
uint8 cbCardCount[DDZ_MAX_COUNT]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
|
|||
|
|
uint8 cbResultCard[DDZ_MAX_COUNT][DDZ_MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//<2F><>Ϸ<EFBFBD><EFBFBD><DFBC><EFBFBD>
|
|||
|
|
class CDDZGameLogic
|
|||
|
|
{
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
protected:
|
|||
|
|
static const uint8 m_cbCardData[DDZ_FULL_COUNT]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD>캯<EFBFBD><ECBAAF>
|
|||
|
|
CDDZGameLogic();
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
virtual ~CDDZGameLogic();
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
uint8 GetCardType(const uint8 cbCardData[], uint8 cbCardCount);
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1>ֵ
|
|||
|
|
uint8 GetCardValue(uint8 cbCardData) { return cbCardData&DDZ_MASK_VALUE; }
|
|||
|
|
//<2F><>ȡ<EFBFBD><C8A1>ɫ
|
|||
|
|
uint8 GetCardColor(uint8 cbCardData) { return cbCardData&DDZ_MASK_COLOR; }
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
|||
|
|
void RandCardList(uint8 cbCardBuffer[], uint8 cbBufferCount);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
|||
|
|
void SortCardList(uint8 cbCardData[], uint8 cbCardCount, uint8 cbSortType);
|
|||
|
|
//ɾ<><C9BE><EFBFBD>˿<EFBFBD>
|
|||
|
|
bool RemoveCardList(const uint8 cbRemoveCard[], uint8 cbRemoveCount, uint8 cbCardData[], uint8 cbCardCount);
|
|||
|
|
//ɾ<><C9BE><EFBFBD>˿<EFBFBD>
|
|||
|
|
bool RemoveCard(const uint8 cbRemoveCard[], uint8 cbRemoveCount, uint8 cbCardData[], uint8 cbCardCount);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
|||
|
|
void SortOutCardList(uint8 cbCardData[], uint8 cbCardCount);
|
|||
|
|
|
|||
|
|
//<2F><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F><EFBFBD><DFBC><EFBFBD>ֵ
|
|||
|
|
uint8 GetCardLogicValue(uint8 cbCardData);
|
|||
|
|
//<2F>Ա<EFBFBD><D4B1>˿<EFBFBD>
|
|||
|
|
bool CompareCard(const uint8 cbFirstCard[], const uint8 cbNextCard[], uint8 cbFirstCount, uint8 cbNextCount);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint8 SearchOutCard( const uint8 cbHandCardData[], uint8 cbHandCardCount, const uint8 cbTurnCardData[], uint8 cbTurnCardCount,
|
|||
|
|
tagSearchCardResult *pSearchCardResult );
|
|||
|
|
//ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint8 SearchSameCard( const uint8 cbHandCardData[], uint8 cbHandCardCount, uint8 cbReferCard, uint8 cbSameCardCount,
|
|||
|
|
tagSearchCardResult *pSearchCardResult );
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
uint8 SearchLineCardType( const uint8 cbHandCardData[], uint8 cbHandCardCount, uint8 cbReferCard, uint8 cbBlockCount, uint8 cbLineCount,
|
|||
|
|
tagSearchCardResult *pSearchCardResult );
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ĵ<EFBFBD>һ<EFBFBD><D2BB>)
|
|||
|
|
uint8 SearchTakeCardType( const uint8 cbHandCardData[], uint8 cbHandCardCount, uint8 cbReferCard, uint8 cbSameCount, uint8 cbTakeCardCount,
|
|||
|
|
tagSearchCardResult *pSearchCardResult );
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD>
|
|||
|
|
uint8 SearchThreeTwoLine( const uint8 cbHandCardData[], uint8 cbHandCardCount, tagSearchCardResult *pSearchCardResult );
|
|||
|
|
|
|||
|
|
//<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
|||
|
|
uint8 MakeCardData(uint8 cbValueIndex, uint8 cbColorIndex);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
|||
|
|
void AnalysebCardData(const uint8 cbCardData[], uint8 cbCardCount, tagAnalyseResult & AnalyseResult);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>
|
|||
|
|
void AnalysebDistributing(const uint8 cbCardData[], uint8 cbCardCount, tagDistributing & Distributing);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
#endif
|