//--------------------------------------------------------------------------- #ifndef PolicyUnitH #define PolicyUnitH //--------------------------------------------------------------------------- #include #include #define TYPE_P_BET 0 #define TYPE_P_CHIP 1 #define KIND_BET_NOR 0 #define KIND_BET_ASK 2 #define KIND_BET_DIF 3 #define KIND_CHIP_NOR 0 #define KIND_CHIP_HAN 1 #define KIND_CHIP_LEV 2 #define KIND_CHIP_COM 3 #define KIND_CHIP_WLD 4 #define KIND_CHIP_RAN 8 //--------------------------------------------------------------------------- using namespace std; //策略基类 class TBaseRow { public: virtual void Clear()=0; // TBaseRow(){Clear();}; }; class TBasePolicy { public: String name; int type; //存储类型 0=内置免费 1=内置付费 2=用户自定义 3=用户定制 int id; //唯一ID int kind; //自定义类型 CHIP:0=普通 1=手数层级 2=组合层级 4=随机 ... BET:0=普通 2=庄闲问路 3=庄闲差... bool actived; //是否激活 vector aRows; virtual void AddNewRow()=0; virtual TBaseRow* ParseRow(char* data, int& err)=0; virtual int ParsePolicy(char* data, int pt); virtual void Clear(); virtual void Reset(); TBasePolicy(){id=type=kind=0;} ~TBasePolicy(); }; //打法策略 class TBetRow : public TBaseRow { public: vector cond; //切入点匹配,字符串解析为整形保存 // item&0x3=颜色 (item&7C)>>2=个数 item&0x80=是否定长 // int bet; //下注方向 vector bets; //下注项 virtual void Clear(){ cond.clear(); bets.clear(); }; // TBetRow(){};//Clear();}; }; class TBetPolicy : public TBasePolicy{ public: int road; //适用路单 TBetPolicy& operator = (const TBetPolicy& b); bool operator == (const TBetPolicy& b); virtual void AddNewRow(); virtual TBaseRow* ParseRow(char* data, int& err); vector ParseCondition(char* data); static vector ParseBet(char* data); virtual void Reset(); TBetPolicy(){road=0;} }; //注码策略 class TChipRow : public TBaseRow{ public: int iSeq; //序号 int chip; //注码/倍数 int iWin; //赢走向 int iLos; //输走向 virtual void Clear(){iSeq=chip=iWin=iLos=0;}; TChipRow(){Clear();}; }; //层级 class TTierRow : public TChipRow{ public: int hands; //层级注码手数 }; //阶梯 class TLevelRow : public TChipRow{ public: int nCondWin; //赢走向条件 int nCondLos; //输走向条件 }; //组合 class TComboRow : public TLevelRow{ public: int id; //方案id int iPolicy; //方案序号 TComboRow(){id=iPolicy=-1;}; }; ////赢输次差 //class TWLDiffRow : public TChipRow{ //public: // int nMore; //大于数值 // int nLess; //少于数值 //}; class TChipPolicy: public TBasePolicy{ public: int dead, //爆缆后操作 0=停止 1=新局重启 2=暂停后重启 deadPause; //暂停分钟数 TChipPolicy& operator = (const TChipPolicy& b); bool operator == (const TChipPolicy& b); virtual void AddNewRow(); virtual TBaseRow* ParseRow(char* data, int& err); TChipPolicy(){dead=deadPause=0;} }; class TTierPolicy: public TChipPolicy{ public: bool bTierWinRet,//二层以上赢利回基 bTierAccChip, //输额加入下层注码 bTierLos0; //输打0 TTierPolicy(){bTierWinRet=bTierAccChip=bTierLos0=0;} }; class TLevelPolicy: public TChipPolicy{ public: bool bTotalDiff, //总体计算输赢 bInstant; //即时跳转 TLevelPolicy(){bTotalDiff=bInstant=0;} }; class TWLDiffPolicy: public TLevelPolicy{ public: bool bIndie; //各层分别统计 TWLDiffPolicy(){bIndie=0;} }; typedef struct tagRandomChip{ int minChip, //最小随机 maxChip; //最大随机 tagRandomChip(){minChip=20, maxChip=100;} }TRandomChip; typedef struct tagBPAskBet{ char bet[2]; //庄全红/闲全红 0=不打 1=庄 2=闲 tagBPAskBet(){bet[0]=1, bet[1]=2;} }TBPAskBet; typedef struct tagBPDiffBet{ BYTE diff[2]; //庄闲差 0=庄大 1=闲大 // char bet[2]; //庄大/闲大下注 1=庄 2=闲 char bets[2][16]; //庄大/闲大下注 1=庄 2=闲 tagBPDiffBet(){diff[0]=diff[1]=5, strcpy(bets[0],"a"), strcpy(bets[1],"s");} }TBPDiffBet; void __fastcall LoadPolicies(); int __fastcall SavePolicy(int type, TBasePolicy* pPolicy, int index); int __fastcall DeletePolicy(int type, int index); int __fastcall MinChipOfPolicy(int index); vector __fastcall PolicyInCombo(int iPolicy); int __fastcall FindPolicy(int type, int id); void __fastcall CheckComboRow(TComboRow* row); extern vector g_aBetPolicies; extern vector g_aChipPolicies; extern int g_iBetPolicy; //全局打法 extern int g_iChipPolicy;//全局注码 extern int g_nChipMul; //全局注码倍数 extern TRandomChip g_RandomChip; extern TBPAskBet g_BPAskBet; extern TBPDiffBet g_BPDiffBet; #endif