Files

122 lines
3.7 KiB
C
Raw Permalink Normal View History

2026-02-13 14:34:15 +08:00
#ifndef GAME_LOGIC_HEAD_FILE
#define GAME_LOGIC_HEAD_FILE
#pragma once
#include "Stdafx.h"
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define ST_ORDER 1 //<2F><>С<EFBFBD><D0A1><EFBFBD><EFBFBD>
#define ST_COUNT 2 //<2F><>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>
#define ST_CUSTOM 3 //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
//////////////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD>
struct tagAnalyseResult
{
BYTE cbBlockCount[4]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
BYTE cbCardData[4][MAX_COUNT]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
};
//<2F><><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD>
struct tagOutCardResult
{
BYTE cbCardCount; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
BYTE cbResultCard[MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
};
//<2F>ֲ<EFBFBD><D6B2><EFBFBD>Ϣ
struct tagDistributing
{
BYTE cbCardCount; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
BYTE cbDistributing[15][6]; //<2F>ֲ<EFBFBD><D6B2><EFBFBD>Ϣ
};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct tagSearchCardResult
{
BYTE cbSearchCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
BYTE cbCardCount[MAX_COUNT]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
BYTE cbResultCard[MAX_COUNT][MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
};
//////////////////////////////////////////////////////////////////////////////////
//<2F><>Ϸ<EFBFBD>߼<EFBFBD><DFBC><EFBFBD>
class CGameLogic
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
protected:
static const BYTE m_cbCardData[FULL_COUNT]; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
static const BYTE m_cbGoodcardData[GOOD_CARD_COUTN]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><ECBAAF>
CGameLogic();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
virtual ~CGameLogic();
//<2F><><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
public:
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
BYTE GetCardType(const BYTE cbCardData[], BYTE cbCardCount);
//<2F><>ȡ<EFBFBD><C8A1>ֵ
BYTE GetCardValue(BYTE cbCardData) { return cbCardData&MASK_VALUE; }
//<2F><>ȡ<EFBFBD><C8A1>ɫ
BYTE GetCardColor(BYTE cbCardData) { return cbCardData&MASK_COLOR; }
//<2F><><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
VOID RandCardList(BYTE cbCardBuffer[], BYTE cbBufferCount);
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
VOID SortCardList(BYTE cbCardData[], BYTE cbCardCount, BYTE cbSortType);
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
VOID SortOutCardList(BYTE cbCardData[], BYTE cbCardCount);
//ɾ<><C9BE><EFBFBD>˿<EFBFBD>
bool RemoveCardList(const BYTE cbRemoveCard[], BYTE cbRemoveCount, BYTE cbCardData[], BYTE cbCardCount);
//ɾ<><C9BE><EFBFBD>˿<EFBFBD>
bool RemoveCard(const BYTE cbRemoveCard[], BYTE cbRemoveCount, BYTE cbCardData[], BYTE cbCardCount);
//ɾ<><C9BE><EFBFBD>˿<EFBFBD>
bool RemoveCardEx(const BYTE cbRemoveCard[], BYTE cbRemoveCount, BYTE cbCardData[], BYTE cbCardCount);
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
void GetGoodCardData(BYTE cbGoodCardData[NORMAL_COUNT]);
//<2F>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F>߼<EFBFBD><DFBC><EFBFBD>ֵ
BYTE GetCardLogicValue(BYTE cbCardData);
//<2F>Ա<EFBFBD><D4B1>˿<EFBFBD>
bool CompareCard(const BYTE cbFirstCard[], const BYTE cbNextCard[], BYTE cbFirstCount, BYTE cbNextCount);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE SearchOutCard( const BYTE cbHandCardData[], BYTE cbHandCardCount, const BYTE cbTurnCardData[], BYTE cbTurnCardCount,
tagSearchCardResult *pSearchCardResult );
//ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE SearchSameCard( const BYTE cbHandCardData[], BYTE cbHandCardCount, BYTE cbReferCard, BYTE cbSameCardCount,
tagSearchCardResult *pSearchCardResult );
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BYTE SearchLineCardType( const BYTE cbHandCardData[], BYTE cbHandCardCount, BYTE cbReferCard, BYTE cbBlockCount, BYTE cbLineCount,
tagSearchCardResult *pSearchCardResult );
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ĵ<EFBFBD>һ<EFBFBD><D2BB>)
BYTE SearchTakeCardType( const BYTE cbHandCardData[], BYTE cbHandCardCount, BYTE cbReferCard, BYTE cbSameCount, BYTE cbTakeCardCount,
tagSearchCardResult *pSearchCardResult );
//<2F><><EFBFBD><EFBFBD><EFBFBD>ɻ<EFBFBD>
BYTE SearchThreeTwoLine( const BYTE cbHandCardData[], BYTE cbHandCardCount, tagSearchCardResult *pSearchCardResult );
//<2F>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
public:
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
BYTE MakeCardData(BYTE cbValueIndex, BYTE cbColorIndex);
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
VOID AnalysebCardData(const BYTE cbCardData[], BYTE cbCardCount, tagAnalyseResult & AnalyseResult);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>
VOID AnalysebDistributing(const BYTE cbCardData[], BYTE cbCardCount, tagDistributing & Distributing);
};
//////////////////////////////////////////////////////////////////////////////////
#endif