97 lines
4.8 KiB
C
97 lines
4.8 KiB
C
|
|
#ifndef AndroidLogic_h__
|
|||
|
|
#define AndroidLogic_h__
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
#include "GameLogic.h"
|
|||
|
|
|
|||
|
|
#define MAX_TYPE_COUNT 254
|
|||
|
|
|
|||
|
|
////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
|
|||
|
|
struct tagOutCardTypeResult
|
|||
|
|
{
|
|||
|
|
BYTE cbCardType; //<2F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BYTE cbCardTypeCount; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ
|
|||
|
|
BYTE cbEachHandCardCount[MAX_TYPE_COUNT]; //ÿ<>ָ<EFBFBD><D6B8><EFBFBD>
|
|||
|
|
BYTE cbEachHandCardData[MAX_TYPE_COUNT][MAX_COUNT]; ///ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
class CAndroidLogic : public CGameLogic
|
|||
|
|
{
|
|||
|
|
//AI<41><49><EFBFBD><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
WORD m_wBankerUser; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
LONG m_lBankerOutCardCount; //<2F><><EFBFBD>ƴ<EFBFBD><C6B4><EFBFBD>
|
|||
|
|
BYTE m_cbHandCardData[GAME_PLAYER][MAX_COUNT]; //<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
|||
|
|
BYTE m_cbHandCardCount[GAME_PLAYER]; //<2F>˿<EFBFBD><CBBF><EFBFBD>Ŀ
|
|||
|
|
BYTE m_cbBackCardData[BACK_COUNT]; //<2F><><EFBFBD><EFBFBD>
|
|||
|
|
BYTE m_cbAllCardOutCount[18]; //<2F><><EFBFBD>Ƽ<EFBFBD>¼ 0,1,2<>±겻<C2B1><EAB2BB>
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD>캯<EFBFBD><ECBAAF>
|
|||
|
|
CAndroidLogic(void);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
~CAndroidLogic(void);
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>
|
|||
|
|
void ResetAllData(bool bConstruct=false);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ׯ<EFBFBD><D7AF>
|
|||
|
|
void SetBankerUser(const WORD wBankerUser);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>˿<EFBFBD>
|
|||
|
|
void SetUserCard(const WORD wChairID, const BYTE cbCardData[], const BYTE cbCardCount);
|
|||
|
|
//<2F><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>
|
|||
|
|
void SetBackCard(const BYTE cbCardData[], const BYTE cbCardCount);
|
|||
|
|
//<2F><><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>
|
|||
|
|
void SetBackCard(const WORD wChairID, const BYTE cbCardData[], const BYTE cbCardCount);
|
|||
|
|
//ɾ<><C9BE><EFBFBD>˿<EFBFBD>
|
|||
|
|
void RemoveUserCard(const WORD wChairID, const BYTE cbRemoveCardData[], const BYTE cbRemoveCardCount);
|
|||
|
|
//<2F>з<EFBFBD><D0B7>ж<EFBFBD>
|
|||
|
|
BYTE LandScore(const WORD wMeChairID, const BYTE cbCurrentLandScore);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>㷨
|
|||
|
|
void Combination(BYTE cbCombineCardData[], BYTE cbResComLen, BYTE cbResultCardData[254][5], BYTE &cbResCardLen, BYTE cbSrcCardData[], BYTE cbCombineLen1, BYTE cbSrcLen, const BYTE cbCombineLen2);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>㷨
|
|||
|
|
void Permutation(BYTE *list, int m, int n, BYTE result[][4], BYTE &len);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
|||
|
|
bool IsLargestCard(const WORD wChairID, const BYTE cbWantOutCardData[], const BYTE cbWantOutCardCount);
|
|||
|
|
//<2F>ų<EFBFBD>ը<EFBFBD><D5A8><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool IsLargestCardWithOutBomb(const WORD wMeChairID, const BYTE cbWantOutCardData[], const BYTE cbWantOutCardCount);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void Analyse4D2CardType(const WORD wMeChairID, const BYTE cbHandCardData[], const BYTE cbHandCardCount, const BYTE cbHandCardType, tagOutCardResult &OutCardResult);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ֻʣһ<CAA3><D2BB><EFBFBD><EFBFBD>ʱ<EFBFBD>ij<EFBFBD><C4B3>Ʋ<EFBFBD><C6B2><EFBFBD>
|
|||
|
|
void AnalyseEnemyLastOneCard(const WORD wMeChairID, const BYTE cbHandCardData[], const BYTE cbHandCardCount, const tagOutCardTypeResult CardTypeResult[13], tagOutCardResult &OutCardResult);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD>ֻʣ<D6BB><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ij<EFBFBD><C4B3>Ʋ<EFBFBD><C6B2><EFBFBD>
|
|||
|
|
void AnalyseEnemyLastTwoCard(const WORD wMeChairID, const BYTE cbHandCardData[], const BYTE cbHandCardCount, const tagOutCardTypeResult CardTypeResult[13], tagOutCardResult &OutCardResult);
|
|||
|
|
|
|||
|
|
//<2F><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
|||
|
|
protected:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>ã<EFBFBD>
|
|||
|
|
void AnalyseOutCardType(const BYTE cbHandCardData[], const BYTE cbHandCardCount, const BYTE cbTurnCardData[], const BYTE cbTurnCardCount, tagOutCardTypeResult OutCardTypeResult[12+1]);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3>ȳ<EFBFBD><C8B3>Ƶ<EFBFBD><C6B5>ã<EFBFBD>
|
|||
|
|
void AnalyseOutCardType(const BYTE cbHandCardData[], const BYTE cbHandCardCount, tagOutCardTypeResult OutCardTypeResult[12+1]);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƹ<EFBFBD><C6B8><EFBFBD>
|
|||
|
|
BYTE AnalyseSinleCardCount(const BYTE cbHandCardData[], const BYTE cbHandCardCount, const BYTE cbWantOutCardData[], const BYTE cbWantOutCardCount, BYTE cbSingleCardData[]=NULL);
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool SearchOutCard(const BYTE cbHandCardData[], const BYTE cbHandCardCount, const BYTE cbTurnCardData[], const BYTE cbTurnCardCount, const WORD wMeChairID, const WORD wOutCardUser, tagOutCardResult &OutCardResult);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3>ȳ<EFBFBD><C8B3>ƣ<EFBFBD>
|
|||
|
|
void BankerOutCard(const BYTE cbHandCardData[], const BYTE cbHandCardCount, const WORD wMeChairID, tagOutCardResult &OutCardResult);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
|
|||
|
|
void BankerOutCard(const BYTE cbHandCardData[], const BYTE cbHandCardCount, const BYTE cbTurnCardData[], const BYTE cbTurnCardCount, const WORD wMeChairID, const WORD wOutCardUser, tagOutCardResult &OutCardResult);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϼң<CFBC><D2A3>ȳ<EFBFBD><C8B3>ƣ<EFBFBD>
|
|||
|
|
void UpsideOfBankerOutCard(const BYTE cbHandCardData[], const BYTE cbHandCardCount, const WORD wMeChairID, tagOutCardResult &OutCardResult);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ϼң<CFBC><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
|
|||
|
|
void UpsideOfBankerOutCard(const BYTE cbHandCardData[], const BYTE cbHandCardCount, const BYTE cbTurnCardData[], const BYTE cbTurnCardCount, const WORD wMeChairID, const WORD wOutCardUser, tagOutCardResult &OutCardResult);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼ң<C2BC><D2A3>ȳ<EFBFBD><C8B3>ƣ<EFBFBD>
|
|||
|
|
void UndersideOfBankerOutCard(const BYTE cbHandCardData[], const BYTE cbHandCardCount, const WORD wMeChairID, tagOutCardResult &OutCardResult);
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>¼ң<C2BC><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
|
|||
|
|
void UndersideOfBankerOutCard(const BYTE cbHandCardData[], const BYTE cbHandCardCount, const BYTE cbTurnCardData[], const BYTE cbTurnCardCount, const WORD wMeChairID, const WORD wOutCardUser, tagOutCardResult &OutCardResult);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#endif // AndroidLogic_h__
|