程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++麻將游戲算法深入解析

C++麻將游戲算法深入解析

編輯:C++入門知識

            C++麻將游戲算法深入解析           這兩天為了工具箱的完善,整理了這些年引擎開發的一些資料,無意中發現06年寫的一個麻將算法,編譯運行了一下,還是有點意思的,拿出來整理一下分享給大家。          麻將是一種大家最喜愛的娛樂活動之一,相信所有人都有接觸過。我寫的這版算法,是可以吃,碰,槓,還有把牌摸完沒有人胡時的皇莊和包聽。是用控制台方式來表現的,什麼?控制台?        對,因為是算法的設計,所以用控制台來表現當然最簡單了。         當然,在交互時要用文字輸入會有少許不便,不過這種形式的游戲可是圖形游戲的鼻祖哦~        好,廢話不多說了,來說一下設計思路:        對於麻將的一個玩家,都有一個牌牆的管理,這裡封裝了一副牌牆的各種算法,這個類我命名為CMJ。      另外還有一個洗牌類,負責洗牌和發牌。這個類為CMJManage。        我們先來看一下CMJ類。 CMJ.h:   [cpp]   #ifndef _CMJ_H   #define _CMJ_H   //============================================   //Author:Honghaier   //Date:2006-12-20   //QQ:285421210   //============================================   #include <windows.h>   #include <iostream>   #include <vector>   #include <algorithm>   using namespace std;         #define MJPAI_ZFB               0   //中,發,白   #define MJPAI_FENG              1   //東西南北風   #define MJPAI_WAN               2   //萬   #define MJPAI_TIAO              3   //條   #define MJPAI_BING              4   //餅   #define MJPAI_HUA               5   //花      #define MJPAI_GETPAI            true    //起牌   #define MJPAI_PUTPAI            false   //打牌   //節點信息   struct stPAI   {       int     m_Type;             //牌類型       int     m_Value;            //牌字      }   ;      //吃牌順   struct stCHI                       {       int     m_Type;             //牌類型       int     m_Value1;           //牌字       int     m_Value2;           //牌字       int     m_Value3;           //牌字   }   ;   //  m_Type      m_Value   //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-//   //  0       |   中   1   發2  白                                                //          |   //  1       |   東 1 西2  南     北                                     //          |   //  2       |   一萬  二萬  ……  九萬   //          |   //  3       |   一條  二條  ……  九條                     //          |   //  4       |   一餅  二餅  ……  九餅   //          |   //  5       |   春       夏       秋       東       竹       蘭       梅       菊   //          |   //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-//            //胡牌信息   struct stGoodInfo   {       char    m_GoodName[100];            //胡牌術語       int     m_GoodValue;                //胡牌番數   }   ;   //牌   class CMJ   {       vector<  int >        m_MyPAIVec[6];      //起的種牌型       vector<  int >        m_ChiPAIVec[6];     //吃的種牌型       vector<  int >        m_PengPAIVec[6];    //碰的種牌型       vector<  int >        m_GangPAIVec[6];    //槓的種牌型          stPAI               m_LastPAI;          //最後起的牌       stGoodInfo          m_GoodInfo;         //胡牌信息          bool                m_9LBD;             //是否聽連寶燈牌型       bool                m_13Y;              //是否聽十三幺       int                 m_MKNum;            //明刻數       int                 m_AKNum;            //暗刻數       bool                m_4AK;              //是否是聽四暗刻          vector<  stCHI >      m_TempChiPAIVec;    //吃的可選組合       vector<  stPAI >      m_TempPengPAIVec;   //碰的可選組合       vector<  stPAI >      m_TempGangPAIVec;   //槓的可選組合      public:          //構造       CMJ();       //析構       ~CMJ();       //初始化       void            Init();       //起牌       bool            AddPai(int p_Type,int p_Value);       //取得對應的牌在牌牆的索引       int             GetPaiIndex(int p_Type,int p_Value);       //打牌(參數為對應的牌在牌牆的索引)       bool            DelPai(int PaiIndex);       //刪除牌       bool            DelPai(int p_Type,int p_Value);       //清空牌       void            CleanUp();       //取得胡牌信息       stGoodInfo      *GetInfo();       //檢測是否胡牌       bool            CheckAllPai(bool GetOrPut);       //對所有的牌進行輸出       void            PrintAllPai();       //對一張牌進行輸出       void            PrintPai(int p_Type,int p_Value);       //吃牌       bool            CheckChiPai(int p_Type,int p_Value);       //吃牌       bool            DoChiPai(int p_iIndex,int p_Type,int p_Value);       //碰牌       bool            CheckPengPai(int p_Type,int p_Value);       //碰牌       bool            DoPengPai(int p_Type,int p_Value);       //槓牌       bool            CheckGangPai(int p_Type,int p_Value);       //槓牌       bool            DoGangPai(int p_Type,int p_Value);       //對可吃的組合進行輸出       void            PrintChiChosePai();       //對可碰的組合進行輸出       void            PrintPengChosePai();       //對可槓的組合進行輸出       void            PrintGangChosePai();       //取得吃牌組合數       UINT            GetChiChoseNum();      private:          //檢測是否胡牌(張)       bool    CheckAAPai(int iValue1,int iValue2);       //檢測是否三連張       bool    CheckABCPai(int iValue1,int iValue2,int iValu3);       //檢測是否三重張       bool    CheckAAAPai(int iValue1,int iValue2,int iValu3);       //檢測是否四重張       bool    CheckAAAAPai(int iValue1,int iValue2,int iValu3,int iValue4);       //檢測是否三連對       bool    CheckAABBCCPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6);       //檢測是否三連高壓       bool    CheckAAABBBCCCPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9);       //檢測是否三連刻       bool    CheckAAAABBBBCCCCPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12);       //檢測是否六連對       bool    CheckAABBCCDDEEFFPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12);       //帶將牌檢測=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=              //檢測是否胡牌(張)       bool    Check5Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5);       //檢測是否胡牌(張)       bool    Check8Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8);       //檢測是否胡牌(張)       bool    Check11Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11);       //檢測是否胡牌(張)       bool    Check14Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12,int iValue13,int iValue14);          //不帶將牌檢測-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=              //檢測是否胡牌(張)       bool    Check3Pai(int iValue1,int iValue2,int iValue3);       //檢測是否胡牌(張)       bool    Check6Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6);       //檢測是否胡牌(張)       bool    Check9Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9);       //檢測是否胡牌(張)       bool    Check12Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12);             private:           //胡牌判斷          //檢測是否胡大四喜       bool    CheckD4X_HU();       //檢則是否胡大三元       bool    CheckD3Y_HU();       //檢測是否胡綠一色       bool    CheckL1S_HU();       //檢測是否胡九蓮寶燈       bool    Check9LBD_HU();       //檢測是否胡四槓       bool    Check4Gang_HU();       //檢測是否胡連七對       bool    CheckL7D_HU();       //檢測是否胡十三幺       bool    Chekc13Y_HU();       //檢測是否胡清幺九       bool    CheckQY9_HU();       //檢測是否胡小四喜       bool    CheckX4X_HU();       //檢測是否胡小三元       bool    CheckX3Y_HU();       //檢測是否胡字一色       bool    CheckZ1S_HU();       //檢測是否四暗刻       bool    Check4AK_HU();       //檢測是否一色雙龍會       bool    Check1S2LH_HU();       //檢測是否一色四同順       bool    Check1S4TS_HU();       //檢測是否一色四節高?       bool    Check1S4JG_HU();       //檢測是否一色四步高?       bool    Check1S4BG_HU();       //檢測是否三槓       bool    Check3Gang_HU();       //檢測是否混幺九       bool    CheckHY9_HU();       //檢測是否七對       bool    Check7D_HU();       //檢測是否七星不靠       bool    Check7XBK_HU();       //檢測是否全雙刻?       bool    CheckQSK_HU();       //清一色       bool    CheckQ1S_HU();       //檢測是否一色三同順       bool    Check1S3TS_HU();       //檢測是否一色三節高       bool    Check1S3JG_HU();       //檢測是否全大       bool    CheckQD_HU();       //檢測是否全中       bool    CheckQZ_HU();       //檢測是否全小       bool    CheckQX_HU();       //檢測是否青龍       bool    CheckQL_HU();       //檢測是否三色雙龍會       bool    Check3S2LH_HU();       //檢測是否一色三步高       bool    Check1S3BG_HU();       //全帶五       bool    CheckQD5_HU();       //三同刻       bool    Check3TK_HU();       //三暗刻       bool    Check3AK_HU();       //單釣將       bool    CheckDDJ_HU();       //檢測胡       bool    CheckHU();   private:       //聽牌判斷          //檢測是否聽九蓮寶燈       bool    Check9LBD_TING();       //檢測是否聽十三幺       bool    Check13Y_TING();       //檢測是否聽四暗刻       bool    Check4AK_TING();       //檢測是否聽牌       bool    CheckTING();      }   ;      #endif   其對應的CPP :   [cpp]   #include "CMJ.h"   //構造   CMJ::CMJ()   {       m_9LBD  = false;       m_13Y   = false;       m_4AK   = false;       m_AKNum = 0;       m_MKNum = 0;   }      //析構   CMJ::~CMJ()   {      }   //初始化   void   CMJ::Init()   {       m_9LBD  = false;       m_13Y   = false;       m_4AK   = false;       m_AKNum = 0;       m_MKNum = 0;   }   //加入新牌,並排序   bool    CMJ::AddPai(int p_Type,int p_Value)   {       int iSize = m_MyPAIVec[p_Type].size();       bool t_Find = false;       vector<  int >::iterator Iter;       for(Iter = m_MyPAIVec[p_Type].begin();Iter !=m_MyPAIVec[p_Type].end(); Iter++)       {           if((*Iter)>p_Value)           {               m_MyPAIVec[p_Type].insert(Iter,p_Value);               t_Find = true;               break;           }                  }              if(t_Find==false)       {           m_MyPAIVec[p_Type].push_back(p_Value);       }       m_LastPAI.m_Type    = p_Type;       m_LastPAI.m_Value   = p_Value;          return true;   }      //取得對應的牌在牌牆的索引   int CMJ::GetPaiIndex(int p_Type,int p_Value)   {       int count = 0;       for(UINT i = 0 ; i < 6 ; i++ )       {           vector<  int >::iterator Iter;           for(Iter = m_MyPAIVec[i].begin();Iter !=m_MyPAIVec[i].end(); Iter++)           {               if(p_Type==i&&(*Iter)==p_Value)               {                   return count;               }               count++;           }       }       return -1;   }   //打牌   bool    CMJ::DelPai(int PaiIndex)   {       int count = 0;       for(UINT i = 0 ; i < 6 ; i++ )       {           vector<  int >::iterator Iter;           for(Iter = m_MyPAIVec[i].begin();Iter !=m_MyPAIVec[i].end(); Iter++)           {               if(count==PaiIndex)               {                   m_MyPAIVec[i].erase(Iter);                   return true;               }               count++;           }       }       return false;   }   //刪除牌   bool    CMJ::DelPai(int p_Type,int p_Value)   {       vector<  int >::iterator Iter;       for(Iter = m_MyPAIVec[p_Type].begin();Iter !=m_MyPAIVec[p_Type].end(); Iter++)       {           if((*Iter)==p_Value)           {               m_MyPAIVec[p_Type].erase(Iter);               return true;           }       }       return false;   }   //清空牌   void    CMJ::CleanUp()   {       for(UINT i = 0 ; i < 6 ; i++ )       {           m_MyPAIVec[i].clear();           m_ChiPAIVec[i].clear();           m_PengPAIVec[i].clear();           m_GangPAIVec[i].clear();       }   }   //取得胡牌信息   stGoodInfo      *CMJ::GetInfo()   {       return &m_GoodInfo;   }      //對所有的牌進行函數調用   void    CMJ::PrintAllPai()   {       cout<<" ";       for(UINT i = 0 ; i < 13 ; i++ )       {           cout<<i<<"  - ";       }       cout<<endl;       int icount = 0;       //箭牌       if(m_MyPAIVec[0].empty()==false)       {           vector<  int >::iterator Iter;           for(Iter = m_MyPAIVec[0].begin();Iter !=m_MyPAIVec[0].end(); Iter++)           {               switch(*Iter)               {               case 1:                   cout<<"[ 中]";                   break;               case 2:                   cout<<"[ 發]";                   break;               case 3:                   cout<<"[ 白]";                   break;                  }               icount++;           }          }       cout<<endl;       for(UINT i =0 ; i < icount; i++ )       {           cout<<"     ";       }       //風牌       if(m_MyPAIVec[1].empty()==false)       {           vector<  int >::iterator Iter;           for(Iter = m_MyPAIVec[1].begin();Iter !=m_MyPAIVec[1].end(); Iter++)           {               switch(*Iter)               {               case 1:                   cout<<"[ 東]";                   break;               case 2:                   cout<<"[ 南]";                   break;               case 3:                   cout<<"[ 西]";                   break;               case 4:                   cout<<"[ 北]";                   break;               }               icount++;           }       }       cout<<endl;       for(UINT i =0 ; i < icount; i++ )       {           cout<<"     ";       }       //萬       if(m_MyPAIVec[2].empty()==false)       {           vector<  int >::iterator Iter;           for(Iter = m_MyPAIVec[2].begin();Iter !=m_MyPAIVec[2].end(); Iter++)           {               cout<<"["<<(*Iter)<<"萬]";               icount++;           }       }       cout<<endl;       for(UINT i =0 ; i < icount; i++ )       {           cout<<"     ";       }       //條       if(m_MyPAIVec[3].empty()==false)       {           vector<  int >::iterator Iter;           for(Iter = m_MyPAIVec[3].begin();Iter !=m_MyPAIVec[3].end(); Iter++)           {               cout<<"["<<(*Iter)<<"條]";               icount++;           }       }       cout<<endl;       for(UINT i =0 ; i < icount; i++ )       {           cout<<"     ";       }       //餅       if(m_MyPAIVec[4].empty()==false)       {           vector<  int >::iterator Iter;           for(Iter = m_MyPAIVec[4].begin();Iter !=m_MyPAIVec[4].end(); Iter++)           {               cout<<"["<<(*Iter)<<"餅]";               icount++;           }       }       cout<<endl;       for(UINT i =0 ; i < icount; i++ )       {           cout<<"     ";       }   }   //對一張牌進行輸出   void CMJ::PrintPai(int p_Type,int p_Value)   {   //箭牌       if(p_Type==0)       {           switch(p_Value)           {           case 1:               cout<<"[中]";               break;           case 2:               cout<<"[發]";               break;           case 3:               cout<<"[白]";               break;           }       }       //風牌       if(p_Type==1)       {           switch(p_Value)           {           case 1:               cout<<"[東]";               break;           case 2:               cout<<"[南]";               break;           case 3:               cout<<"[西]";               break;           case 4:               cout<<"[北]";               break;           }       }       //萬       if(p_Type==2)       {           cout<<"["<<p_Value<<"萬]";       }       //條       if(p_Type==3)       {           cout<<"["<<p_Value<<"條]";       }       //餅       if(p_Type==4)       {           cout<<"["<<p_Value<<"餅]";       }   }      //吃牌   bool    CMJ::CheckChiPai(int p_Type,int p_Value)   {       m_TempChiPAIVec.clear();       //餅       if(m_MyPAIVec[p_Type].empty()==false)       {           int iSize = m_MyPAIVec[p_Type].size();           if( iSize >= 2)           {               for(UINT i = 0 ; i < iSize-1 ;  i++ )               {                   if((m_MyPAIVec[p_Type][i]==(p_Value-2))&&(m_MyPAIVec[p_Type][i+1]==(p_Value-1)))                   {                       stCHI t_Chi;                       t_Chi.m_Type = p_Type;                       t_Chi.m_Value1 = p_Value-2;                       t_Chi.m_Value2 = p_Value-1;                       t_Chi.m_Value3 = p_Value;                       m_TempChiPAIVec.push_back(t_Chi);                      }                   if((m_MyPAIVec[p_Type][i]==(p_Value-1))&&(m_MyPAIVec[p_Type][i+1]==(p_Value+1)))                   {                       stCHI t_Chi;                       t_Chi.m_Type = p_Type;                       t_Chi.m_Value1 = p_Value-1;                       t_Chi.m_Value2 = p_Value;                       t_Chi.m_Value3 = p_Value+1;                       m_TempChiPAIVec.push_back(t_Chi);                      }                   if((m_MyPAIVec[p_Type][i]==(p_Value+1))&&(m_MyPAIVec[p_Type][i+1]==(p_Value+2)))                   {                       stCHI t_Chi;                       t_Chi.m_Type = p_Type;                       t_Chi.m_Value1 = p_Value;                       t_Chi.m_Value2 = p_Value+1;                       t_Chi.m_Value3 = p_Value+2;                       m_TempChiPAIVec.push_back(t_Chi);                   }               }              }           //假設吃B,已有ABC           if( iSize >= 3)           {               for(UINT i = 1 ; i < iSize-1 ;  i++ )               {                   if((m_MyPAIVec[p_Type][i-1]==(p_Value-1))&&(m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+1]==(p_Value+1)))                   {                       stCHI t_Chi;                       t_Chi.m_Type = p_Type;                       t_Chi.m_Value1 = p_Value-1;                       t_Chi.m_Value2 = p_Value;                       t_Chi.m_Value3 = p_Value+1;                       m_TempChiPAIVec.push_back(t_Chi);                   }               }           }           //假設吃B,已有ABBC           if( iSize >= 4)           {               for(UINT i = 1 ; i < iSize-2 ;  i++ )               {                   if((m_MyPAIVec[p_Type][i-1]==(p_Value-1))&&(m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+2]==(p_Value+1)))                   {                       stCHI t_Chi;                       t_Chi.m_Type = p_Type;                       t_Chi.m_Value1 = p_Value-1;                       t_Chi.m_Value2 = p_Value;                       t_Chi.m_Value3 = p_Value+1;                       m_TempChiPAIVec.push_back(t_Chi);                   }               }           }           //假設吃B,已有ABBBC           if( iSize >= 5)           {               for(UINT i = 1 ; i < iSize-3 ;  i++ )               {                   if((m_MyPAIVec[p_Type][i-1]==(p_Value-1))&&(m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+3]==(p_Value+1)))                   {                       stCHI t_Chi;                       t_Chi.m_Type = p_Type;                       t_Chi.m_Value1 = p_Value-1;                       t_Chi.m_Value2 = p_Value;                       t_Chi.m_Value3 = p_Value+1;                       m_TempChiPAIVec.push_back(t_Chi);                   }               }           }           //假設吃B,已有ABBBBC           if( iSize >= 6)           {               for(UINT i = 1 ; i < iSize-4 ;  i++ )               {                   if((m_MyPAIVec[p_Type][i-1]==(p_Value-1))&&(m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+4]==(p_Value+1)))                   {                       stCHI t_Chi;                       t_Chi.m_Type = p_Type;                       t_Chi.m_Value1 = p_Value-1;                       t_Chi.m_Value2 = p_Value;                       t_Chi.m_Value3 = p_Value+1;                       m_TempChiPAIVec.push_back(t_Chi);                   }               }           }           if(m_TempChiPAIVec.size() > 0)           {               return  true;           }       }       return false;   }   //吃牌   bool CMJ::DoChiPai(int p_iIndex,int p_Type,int p_Value)   {        AddPai(p_Type,p_Value);       vector<stCHI>::iterator Iter;       int icount = 0;       for(Iter = m_TempChiPAIVec.begin(); Iter != m_TempChiPAIVec.end(); Iter++ )       {           if(icount == p_iIndex)           {               DelPai((*Iter).m_Type,(*Iter).m_Value1);               DelPai((*Iter).m_Type,(*Iter).m_Value2);               DelPai((*Iter).m_Type,(*Iter).m_Value3);                  m_ChiPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value1);               m_ChiPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value2);               m_ChiPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value3);                  return true;           }           icount++;       }       return false;   }   //對可吃的組合進行輸出   void CMJ::PrintChiChosePai()   {       cout<<"================吃牌組合======================="<<endl;       vector<stCHI>::iterator Iter;       for(Iter = m_TempChiPAIVec.begin(); Iter != m_TempChiPAIVec.end();Iter++)       {           //萬           if((*Iter).m_Type==2)           {               cout<<"["<<(*Iter).m_Value1<<"萬";               cout<<""<<(*Iter).m_Value2<<"萬";               cout<<""<<(*Iter).m_Value3<<"萬]";           }           //條           if((*Iter).m_Type==3)           {               cout<<"["<<(*Iter).m_Value1<<"條";               cout<<""<<(*Iter).m_Value2<<"條";               cout<<""<<(*Iter).m_Value3<<"條]";           }           //餅           if((*Iter).m_Type==4)           {               cout<<"["<<(*Iter).m_Value1<<"餅";               cout<<""<<(*Iter).m_Value2<<"餅";               cout<<""<<(*Iter).m_Value3<<"餅]";           }       }       cout<<endl<<"========================================="<<endl;   }   //對可碰的組合進行輸出   void CMJ::PrintPengChosePai()   {       cout<<"=====================碰牌=================="<<endl;       vector<stPAI>::iterator Iter;       for(Iter = m_TempPengPAIVec.begin(); Iter != m_TempPengPAIVec.end();Iter++)       {           //萬           if((*Iter).m_Type==2)           {               cout<<"["<<(*Iter).m_Value<<"萬";               cout<<""<<(*Iter).m_Value<<"萬";               cout<<""<<(*Iter).m_Value<<"萬]";           }           //條           if((*Iter).m_Type==3)           {               cout<<"["<<(*Iter).m_Value<<"條";               cout<<""<<(*Iter).m_Value<<"條";               cout<<""<<(*Iter).m_Value<<"條]";           }           //餅           if((*Iter).m_Type==4)           {               cout<<"["<<(*Iter).m_Value<<"餅";               cout<<""<<(*Iter).m_Value<<"餅";               cout<<""<<(*Iter).m_Value<<"餅]";           }       }       cout<<endl<<"========================================="<<endl;   }   //對可槓的組合進行輸出   void CMJ::PrintGangChosePai()   {       cout<<"====================槓牌==================="<<endl;       vector<stPAI>::iterator Iter;       for(Iter = m_TempGangPAIVec.begin(); Iter != m_TempGangPAIVec.end();Iter++)       {           //萬           if((*Iter).m_Type==2)           {               cout<<"["<<(*Iter).m_Value<<"萬";               cout<<""<<(*Iter).m_Value<<"萬";               cout<<""<<(*Iter).m_Value<<"萬";               cout<<""<<(*Iter).m_Value<<"萬]";           }           //條           if((*Iter).m_Type==3)           {               cout<<"["<<(*Iter).m_Value<<"條";               cout<<""<<(*Iter).m_Value<<"條";               cout<<""<<(*Iter).m_Value<<"條";               cout<<""<<(*Iter).m_Value<<"條]";           }           //餅           if((*Iter).m_Type==4)           {               cout<<"["<<(*Iter).m_Value<<"餅";               cout<<""<<(*Iter).m_Value<<"餅";               cout<<""<<(*Iter).m_Value<<"餅";               cout<<""<<(*Iter).m_Value<<"餅]";           }       }       cout<<endl<<"========================================="<<endl;   }   //取得吃牌組合數   UINT CMJ::GetChiChoseNum()   {       return m_TempChiPAIVec.size();   }   //碰牌   bool    CMJ::CheckPengPai(int p_Type,int p_Value)   {       m_TempPengPAIVec.clear();       //餅       if(m_MyPAIVec[p_Type].empty()==false)       {           int iSize = m_MyPAIVec[p_Type].size();           if( iSize >= 2)           {               for(UINT i = 0 ; i < iSize-1 ;  i++ )               {                   if((m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+1]==p_Value))                   {                       stPAI t_Peng;                       t_Peng.m_Type   = p_Type;                       t_Peng.m_Value  = p_Value;                       m_TempPengPAIVec.push_back(t_Peng);                       break;                   }               }           }           if(m_TempPengPAIVec.size() > 0)           {               return true;           }       }       return false;   }   //碰牌   bool    CMJ::DoPengPai(int p_Type,int p_Value)   {       AddPai(p_Type,p_Value);       vector<stPAI>::iterator Iter;       for(Iter = m_TempPengPAIVec.begin(); Iter != m_TempPengPAIVec.end(); Iter++ )       {           DelPai((*Iter).m_Type,(*Iter).m_Value);           DelPai((*Iter).m_Type,(*Iter).m_Value);           DelPai((*Iter).m_Type,(*Iter).m_Value);              m_PengPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);           m_PengPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);           m_PengPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);           return true;       }       return false;   }   //槓牌   bool    CMJ::CheckGangPai(int p_Type,int p_Value)   {          m_TempGangPAIVec.clear();       //餅       if(m_MyPAIVec[p_Type].empty()==false)       {           int iSize = m_MyPAIVec[p_Type].size();           if( iSize >= 3)           {               for(UINT i = 0 ; i < iSize-2 ;  i++ )               {                   if((m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+1]==p_Value)&&(m_MyPAIVec[p_Type][i+2]==p_Value))                   {                       stPAI t_Gang;                       t_Gang.m_Type   = p_Type;                       t_Gang.m_Value  = p_Value;                       m_TempGangPAIVec.push_back(t_Gang);                       break;                   }               }           }           if(m_TempGangPAIVec.size() > 0)           {               return true;           }       }       return false;   }   //槓牌   bool    CMJ::DoGangPai(int p_Type,int p_Value)   {       AddPai(p_Type,p_Value);       vector<stPAI>::iterator Iter;       for(Iter = m_TempGangPAIVec.begin(); Iter != m_TempGangPAIVec.end(); Iter++ )       {           DelPai((*Iter).m_Type,(*Iter).m_Value);           DelPai((*Iter).m_Type,(*Iter).m_Value);           DelPai((*Iter).m_Type,(*Iter).m_Value);           DelPai((*Iter).m_Type,(*Iter).m_Value);              //排序放入           if(m_GangPAIVec[(*Iter).m_Type].empty())           {               m_GangPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);               m_GangPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);               m_GangPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);               m_GangPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);           }           else           {                   vector<int>::iterator Iter2;                   for(Iter2 = m_GangPAIVec[(*Iter).m_Type].begin(); Iter2 != m_GangPAIVec[(*Iter).m_Type].end(); Iter2++ )                   {                       if((*Iter2)>(*Iter).m_Value)                       {                           m_GangPAIVec[(*Iter).m_Type].insert(Iter2,(*Iter).m_Value);                           m_GangPAIVec[(*Iter).m_Type].insert(Iter2,(*Iter).m_Value);                           m_GangPAIVec[(*Iter).m_Type].insert(Iter2,(*Iter).m_Value);                           m_GangPAIVec[(*Iter).m_Type].insert(Iter2,(*Iter).m_Value);                           break;                       }                   }           }           return true;       }       return false;   }   //檢測是否胡牌   bool    CMJ::CheckAllPai(bool GetOrPut)   {       if(GetOrPut == MJPAI_GETPAI)       {           //檢查大四喜           if(CheckD4X_HU())           {               strcpy(m_GoodInfo.m_GoodName,"大四喜");               m_GoodInfo.m_GoodValue = 88;               return true;           }           //檢查大三元           if(CheckD3Y_HU())           {               strcpy(m_GoodInfo.m_GoodName,"大三元");               m_GoodInfo.m_GoodValue = 88;               return true;           }           //檢查綠一色           if(CheckL1S_HU())           {               strcpy(m_GoodInfo.m_GoodName,"綠一色");               m_GoodInfo.m_GoodValue = 88;               return true;           }           //檢查九蓮寶燈           if(Check9LBD_HU())           {               strcpy(m_GoodInfo.m_GoodName,"九蓮寶燈");               m_GoodInfo.m_GoodValue = 88;               return true;           }           //檢查四槓           if(Check4Gang_HU())           {               strcpy(m_GoodInfo.m_GoodName,"四槓");               m_GoodInfo.m_GoodValue = 88;               return true;           }           //檢查連七對           if(CheckL7D_HU())           {               strcpy(m_GoodInfo.m_GoodName,"連七對");               m_GoodInfo.m_GoodValue = 88;               return true;           }           //檢查十三幺           if(Chekc13Y_HU())           {               strcpy(m_GoodInfo.m_GoodName,"十三幺");               m_GoodInfo.m_GoodValue = 88;               return true;           }           //檢查清幺九           if(CheckQY9_HU())           {               strcpy(m_GoodInfo.m_GoodName,"清幺九");               m_GoodInfo.m_GoodValue = 64;               return true;           }           //檢查小四喜           if(CheckX4X_HU())           {               strcpy(m_GoodInfo.m_GoodName,"小四喜");               m_GoodInfo.m_GoodValue = 64;               return true;           }           //檢查小三元           if(CheckX3Y_HU())           {               strcpy(m_GoodInfo.m_GoodName,"小三元");               m_GoodInfo.m_GoodValue = 64;               return true;           }           //檢測是否四暗刻           if(Check4AK_HU())           {               strcpy(m_GoodInfo.m_GoodName,"四暗刻");               m_GoodInfo.m_GoodValue = 64;               return true;           }           //檢測是否一色雙龍會           if(Check1S2LH_HU())           {               strcpy(m_GoodInfo.m_GoodName,"一色雙龍會");               m_GoodInfo.m_GoodValue = 64;               return true;           }           //檢測是否一色四同順           if(Check1S4TS_HU())           {               strcpy(m_GoodInfo.m_GoodName,"一色四同順");               m_GoodInfo.m_GoodValue = 48;               return true;           }           //檢測是否一色四節高           if(Check1S4JG_HU())           {               strcpy(m_GoodInfo.m_GoodName,"一色四節高");               m_GoodInfo.m_GoodValue = 48;               return true;           }           //檢測是否一色四步高           if(Check1S4BG_HU())           {               strcpy(m_GoodInfo.m_GoodName,"一色四步高");               m_GoodInfo.m_GoodValue = 32;               return true;           }           //檢測是否三槓           if(Check3Gang_HU())           {               strcpy(m_GoodInfo.m_GoodName,"三槓");               m_GoodInfo.m_GoodValue = 32;               return true;           }                      //檢測是否七對           if(Check7D_HU())           {               strcpy(m_GoodInfo.m_GoodName,"七對");               m_GoodInfo.m_GoodValue = 24;               return true;           }           //檢測是否七星不靠           if(Check7XBK_HU())           {               strcpy(m_GoodInfo.m_GoodName,"七星不靠");               m_GoodInfo.m_GoodValue = 24;               return true;           }           //檢測是否全雙刻           if(CheckQSK_HU())           {               strcpy(m_GoodInfo.m_GoodName,"全雙刻");               m_GoodInfo.m_GoodValue = 24;               return true;           }           //檢測是否清一色           if(CheckQ1S_HU())           {               strcpy(m_GoodInfo.m_GoodName,"清一色");               m_GoodInfo.m_GoodValue = 24;               return true;           }           //檢測是否一色三同順           if(Check1S3TS_HU())           {               strcpy(m_GoodInfo.m_GoodName,"一色三同順");               m_GoodInfo.m_GoodValue = 24;               return true;           }           //檢測是否一色三節高           if(Check1S3JG_HU())           {               strcpy(m_GoodInfo.m_GoodName,"一色三節高");               m_GoodInfo.m_GoodValue = 24;               return true;           }           //檢測是否全大           if(CheckQD_HU())           {               strcpy(m_GoodInfo.m_GoodName,"全大");               m_GoodInfo.m_GoodValue = 24;               return true;           }           //檢測是否全中           if(CheckQZ_HU())           {               strcpy(m_GoodInfo.m_GoodName,"全中");               m_GoodInfo.m_GoodValue = 24;               return true;           }           //檢測是否全小           if(CheckQX_HU())           {               strcpy(m_GoodInfo.m_GoodName,"全小");               m_GoodInfo.m_GoodValue = 24;               return true;           }           //檢測是否青龍           if(CheckQL_HU())           {               strcpy(m_GoodInfo.m_GoodName,"青龍");               m_GoodInfo.m_GoodValue = 16;               return true;           }           //檢測是否三色雙龍會           if(Check3S2LH_HU())           {               strcpy(m_GoodInfo.m_GoodName,"三色雙龍會");               m_GoodInfo.m_GoodValue = 16;               return true;           }           //檢測是否一色三步高           if(Check1S3BG_HU())           {               strcpy(m_GoodInfo.m_GoodName,"一色三步高");               m_GoodInfo.m_GoodValue = 16;               return true;           }                  //檢測是否單調將           if(CheckDDJ_HU())           {               strcpy(m_GoodInfo.m_GoodName,"單調將");               m_GoodInfo.m_GoodValue = 1;               return true;           }              //檢測是否平胡           if(CheckHU())           {               strcpy(m_GoodInfo.m_GoodName,"平胡");               m_GoodInfo.m_GoodValue = 1;               return true;           }          }              else       {           //判斷是否聽連寶燈           m_9LBD = Check9LBD_TING();            if(m_9LBD)return true;           //判斷是否聽幺           m_13Y  = Check13Y_TING();           if(m_13Y)return true;           //判斷是否四暗刻           m_4AK  = Check4AK_TING();           if(m_4AK)return true;           //檢測是否聽頭           return CheckTING();       }       return false;   }      //檢測是否胡牌(張)   inline bool CMJ::CheckAAPai(int iValue1,int iValue2)   {       if(iValue1 == iValue2)return true;       return false;   }      //檢測是否三連張   inline bool CMJ::CheckABCPai(int iValue1,int iValue2,int iValue3)   {       if(iValue1 == (iValue2-1)&&iValue2 == (iValue3-1))return true;       return false;   }      //檢測是否三重張   inline bool CMJ::CheckAAAPai(int iValue1,int iValue2,int iValue3)   {       if(iValue1 == iValue2&&iValue2 == iValue3)return true;       return false;   }      //檢測是否四重張   inline bool CMJ::CheckAAAAPai(int iValue1,int iValue2,int iValue3,int iValue4)   {       if(iValue1 == iValue2&&iValue2 == iValue3&&iValue3 == iValue4)return true;       return false;   }   //檢測是否三連對   inline bool CMJ::CheckAABBCCPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6)   {       if(iValue1 == iValue2&&iValue3 == iValue4&&iValue5 == iValue6)       {           if((iValue1 == iValue3-1)&&(iValue3 == iValue5-1))           {               return true;           }       }       return false;      }   //檢測是否三連高壓   inline bool CMJ::CheckAAABBBCCCPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9)   {       if((iValue1 == iValue2&&iValue2 == iValue3)&&(iValue4 == iValue5&&iValue5 == iValue6)&&(iValue7 == iValue8&&iValue8 == iValue9))       {           if((iValue1 == iValue4-1)&&(iValue4 == iValue7-1))           {               return true;           }       }       return false;   }   //檢測是否三連刻   inline bool CMJ::CheckAAAABBBBCCCCPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12)   {       if((iValue1 == iValue2&&iValue2 == iValue3&&iValue3 == iValue4)&&(iValue5 == iValue6&&iValue6 == iValue7&&iValue7 == iValue8)&&(iValue9 == iValue10&&iValue10 == iValue11&&iValue11 == iValue12))       {           if((iValue1 == iValue5-1)&&(iValue5 == iValue9-1))           {               return true;           }       }       return false;   }   //檢測是否六連對   inline bool CMJ::CheckAABBCCDDEEFFPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12)   {       if(iValue1 == iValue2&&iValue3 == iValue4&&iValue5 == iValue6&&iValue7 == iValue8&&iValue9 == iValue10&&iValue11 == iValue12)       {           if((iValue1 == iValue3-1)&&(iValue3 == iValue5-1)&&(iValue5 == iValue7-1)&&(iValue7 == iValue9-1)&&(iValue9 == iValue11-1))           {               return true;           }       }       return false;   }      //檢測是否胡牌(張)   bool    CMJ::Check5Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5)   {       //如果是左邊兩個為將,右邊為三重張或三連張       if(CheckAAPai(iValue1,iValue2))       {           if(Check3Pai(iValue3,iValue4,iValue5))return true;          }       //如果中間兩個為將       if(CheckAAAPai(iValue2,iValue3,iValue4))       {           if(CheckABCPai(iValue1,iValue4,iValue5))return true;       }       //如果是左邊兩個為將,右邊為三重張或三連張       if(CheckAAPai(iValue4,iValue5))       {           if(Check3Pai(iValue1,iValue2,iValue3))return true;       }          return false;   }   //檢測是否胡牌(張)   bool    CMJ::Check8Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8)   {       //如果是左邊兩個為將,右邊為三重張或三連張       if(CheckAAPai(iValue1,iValue2))       {           return Check6Pai(iValue3,iValue4,iValue5,iValue6,iValue7,iValue8);       }          //如果是中間兩個為將,左右邊為三重張或三連張       if(CheckAAPai(iValue4,iValue5))       {           if(Check3Pai(iValue1,iValue2,iValue3)&&Check3Pai(iValue6,iValue7,iValue8))return true;       }          //如果是右邊兩個為將,左邊為三重張或三連張       if(CheckAAPai(iValue7,iValue8))       {           return Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6);       }          return false;   }   //檢測是否胡牌(張)   bool    CMJ::Check11Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11)   {       //如果是左邊兩個為將       if(CheckAAPai(iValue1,iValue2))       {           return Check9Pai(iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9,iValue10,iValue11);           }          //如果是中間兩個為將       if(CheckAAPai(iValue4,iValue5))       {           //無AAA,全ABC           if(Check3Pai(iValue1,iValue2,iValue3)&&Check6Pai(iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;         }          //如果是右邊兩個為將       if(CheckAAPai(iValue7,iValue8))       {           //無AAA,全ABC           if(Check3Pai(iValue9,iValue10,iValue11)&&Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6))return true;       }          //如果是右邊兩個為將       if(CheckAAPai(iValue10,iValue11))       {           return Check9Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9);       }       return false;   }   //檢測是否胡牌(張)   bool    CMJ::Check14Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12,int iValue13,int iValue14)   {       //如果是左邊兩個為將,右邊為三重張或三連張       if(CheckAAPai(iValue1,iValue2))       {           //無AAA,全ABC           if(Check12Pai(iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9,iValue10,iValue11,iValue12,iValue13,iValue14))return true;           return false;       }          //如果是中間兩個為將,左右邊為三重張或三連張       if(CheckAAPai(iValue4,iValue5))       {           //無AAA,全ABC           if(Check3Pai(iValue1,iValue2,iValue3)&&Check9Pai(iValue6,iValue7,iValue8,iValue9,iValue10,iValue11,iValue12,iValue13,iValue14))return true;           return false;       }          //如果是中間兩個為將,左右邊為三重張或三連張       if(CheckAAPai(iValue7,iValue8))       {           //無AAA,全ABC           if(Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6)&&Check6Pai(iValue9,iValue10,iValue11,iValue12,iValue13,iValue14))return true;           return false;       }          //如果是中間兩個為將,左右邊為三重張或三連張       if(CheckAAPai(iValue10,iValue11))       {           //無AAA,全ABC           if(Check3Pai(iValue12,iValue13,iValue14)&&Check9Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;           return false;       }          //如果是右邊兩個為將,左右邊為三重張或三連張       if(CheckAAPai(iValue13,iValue14))       {           //無AAA,全ABC           if(Check12Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9,iValue10,iValue11,iValue12))return true;       }       return false;   }   //檢測是否胡牌(張)   bool    CMJ::Check3Pai(int iValue1,int iValue2,int iValue3)   {       if(CheckABCPai(iValue1,iValue2,iValue3))return true;       if(CheckAAAPai(iValue1,iValue2,iValue3))return true;       return false;   }   //檢測是否胡牌(張)   bool    CMJ::Check6Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6)   {       if(Check3Pai(iValue1,iValue2,iValue3)&&Check3Pai(iValue4,iValue5,iValue6))return true;       if(Check3Pai(iValue1,iValue2,iValue3)&&Check3Pai(iValue4,iValue5,iValue6))return true;       //三連對       if(CheckAABBCCPai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6))return true;       //第一張牌四連張       if(CheckAAAAPai(iValue2,iValue3,iValue4,iValue5))       {           if(CheckABCPai(iValue1,iValue2,iValue6))return true;       }       return false;   }      //檢測是否胡牌(張)   bool    CMJ::Check9Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9)   {       if(CheckABCPai(iValue1,iValue2,iValue3)&&Check6Pai(iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;       if(CheckAAAPai(iValue1,iValue2,iValue3)&&Check6Pai(iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;       if(CheckABCPai(iValue7,iValue8,iValue9)&&Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6))return true;       if(CheckAAAPai(iValue7,iValue8,iValue9)&&Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6))return true;          return false;   }      //檢測是否胡牌(張)   bool    CMJ::Check12Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12)   {       if(CheckABCPai(iValue1,iValue2,iValue3)&&Check9Pai(iValue4,iValue5,iValue6,iValue7,iValue8,iValue9,iValue10,iValue11,iValue12))return true;       if(CheckAAAPai(iValue1,iValue2,iValue3)&&Check9Pai(iValue4,iValue5,iValue6,iValue7,iValue8,iValue9,iValue10,iValue11,iValue12))return true;       if(CheckABCPai(iValue10,iValue11,iValue12)&&Check9Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;       if(CheckAAAPai(iValue10,iValue11,iValue12)&&Check9Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;       if(Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6)&&Check6Pai(iValue7,iValue8,iValue9,iValue10,iValue11,iValue12))return true;          return false;   }   //檢測是否是大四喜   bool    CMJ::CheckD4X_HU()   {       //東西南北四槓       if(m_GangPAIVec[1].size()==16)       {           //將牌           for(int i = 0 ; i < 6 ; i++ )           {               if(m_MyPAIVec[i].size()==2)               {                   //如果是將                   if(m_MyPAIVec[i][0] == m_MyPAIVec[i][1])                   {                       return true;                   }               }           }       }       return false;      }          //檢則是否是大三元   bool    CMJ::CheckD3Y_HU()   {       //中發白三槓       if(m_GangPAIVec[0].size()==12)       {           //將牌           for(int i = 0 ; i < 6 ; i++ )           {               if(m_MyPAIVec[i].size()==2)               {                   //如果是將                   if(m_MyPAIVec[i][0] == m_MyPAIVec[i][1])                   {                       return true;                   }               }           }       }       return false;   }      //檢測是否綠一色   bool    CMJ::CheckL1S_HU()   {       //只准有發財和條       if(m_MyPAIVec[1].size()>0)return false;       if(m_MyPAIVec[2].size()>0)return false;       if(m_MyPAIVec[4].size()>0)return false;       if(m_MyPAIVec[5].size()>0)return false;       if(m_ChiPAIVec[1].size()>0)return false;       if(m_ChiPAIVec[2].size()>0)return false;       if(m_ChiPAIVec[4].size()>0)return false;       if(m_ChiPAIVec[5].size()>0)return false;       if(m_PengPAIVec[1].size()>0)return false;       if(m_PengPAIVec[2].size()>0)return false;       if(m_PengPAIVec[4].size()>0)return false;       if(m_PengPAIVec[5].size()>0)return false;       if(m_GangPAIVec[1].size()>0)return false;       if(m_GangPAIVec[2].size()>0)return false;       if(m_GangPAIVec[4].size()>0)return false;       if(m_GangPAIVec[5].size()>0)return false;       //對發財       if(m_MyPAIVec[0].size() ==2)       {           if(m_MyPAIVec[0][0]==2&&m_MyPAIVec[0][1]==2)           {               for(int i = 1 ;i < 6 ; i++)               {                   if(i==3)continue;                   if(m_MyPAIVec[i].size()>0)return false;                   if(m_ChiPAIVec[i].size()>0)return false;                   if(m_PengPAIVec[i].size()>0)return false;                   if(m_GangPAIVec[i].size()>0)return false;               }               //吃               int iSize = m_ChiPAIVec[3].size();               if(iSize>0)               {                   vector<  int >::iterator Iter;                   for(Iter = m_ChiPAIVec[3].begin();Iter != m_ChiPAIVec[3].end();Iter++ )                   {                       if((*Iter)==1)return false;                       if((*Iter)==5)return false;                       if((*Iter)==7)return false;                       if((*Iter)==9)return false;                   }               }               //碰               iSize = m_PengPAIVec[3].size();               if(iSize>0)               {                   vector<  int >::iterator Iter;                   for(Iter = m_PengPAIVec[3].begin();Iter != m_PengPAIVec[3].end();Iter++ )                   {                       if((*Iter)==1)return false;                       if((*Iter)==5)return false;                       if((*Iter)==7)return false;                       if((*Iter)==9)return false;                   }               }               //槓               iSize = m_GangPAIVec[3].size();               if(iSize>0)               {                   vector<  int >::iterator Iter;                   for(Iter = m_GangPAIVec[3].begin();Iter != m_GangPAIVec[3].end();Iter++ )                   {                       if((*Iter)==1)return false;                       if((*Iter)==5)return false;                       if((*Iter)==7)return false;                       if((*Iter)==9)return false;                   }               }               //起               iSize = m_MyPAIVec[3].size();               if(iSize>0)               {                   vector<  int >::iterator Iter;                   for(Iter = m_MyPAIVec[3].begin();Iter != m_MyPAIVec[3].end();Iter++ )                   {                       if((*Iter)==1)return false;                       if((*Iter)==5)return false;                       if((*Iter)==7)return false;                       if((*Iter)==9)return false;                   }                  }           }       }       else       {           return false;       }       //如果有三張       if(m_MyPAIVec[3].size() == 3)       {           if(Check3Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2]))return true;       }       //如果有六張       if(m_MyPAIVec[3].size() == 6)       {           if(Check6Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5]))return true;       }       //九張       if(m_MyPAIVec[3].size() == 9)       {           if(Check9Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8]))return true;       }       //十二張       if(m_MyPAIVec[3].size() == 12)       {           if(Check12Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8],m_MyPAIVec[3][9],m_MyPAIVec[3][10],m_MyPAIVec[3][11]))return true;       }       return  false;   }      //檢測是否九蓮寶燈(胡)   bool    CMJ::Check9LBD_HU()   {       if(m_9LBD)//如果已經成九連寶燈牌型       {           if(m_MyPAIVec[2].size()==14)return true;           if(m_MyPAIVec[3].size()==14)return true;           if(m_MyPAIVec[4].size()==14)return true;       }       return false;   }   //檢測是否九蓮寶燈牌型(聽)   bool    CMJ::Check9LBD_TING()   {       for(UINT i = 2 ; i < 5 ; i++ )       {           if(m_MyPAIVec[i].size()==13)           {               if(m_MyPAIVec[i][0]==1&&m_MyPAIVec[i][1]==1&&m_MyPAIVec[i][2]==1)               {                   if(m_MyPAIVec[i][3]==2&&m_MyPAIVec[i][4]==3&&m_MyPAIVec[i][5]==4&&m_MyPAIVec[i][6]==5&&m_MyPAIVec[i][7]==6&&m_MyPAIVec[i][8]==7&&m_MyPAIVec[i][9]==8)                   {                       if(m_MyPAIVec[i][10]==9&&m_MyPAIVec[i][11]==9&&m_MyPAIVec[i][12]==9)                       {                           return true;                       }                   }               }           }       }          return false;   }   //檢測是否是四槓   bool    CMJ::Check4Gang_HU()   {       int iSize = 0;       for(UINT i = 0 ; i < 6 ; i++ )       {           iSize = m_GangPAIVec[i].size();       }          if(iSize == 16)       {           //將牌           for(int i = 0 ; i < 6 ; i++ )           {               //如果是將               if(CheckAAPai(m_MyPAIVec[i][0],m_MyPAIVec[i][1]))               {                   return true;               }           }                  }       return false;   }      //檢測是否連七對   bool    CMJ::CheckL7D_HU()   {          for(UINT i = 2 ; i < 5 ; i++ )       {           if(m_MyPAIVec[i].size()==14)           {               if(m_MyPAIVec[i][0]==1&&m_MyPAIVec[i][1]==1&&m_MyPAIVec[i][2]==2&&m_MyPAIVec[i][3]==2&&m_MyPAIVec[i][4]==3&&m_MyPAIVec[i][5]==3&&m_MyPAIVec[i][6]==4&&m_MyPAIVec[i][7]==4&&m_MyPAIVec[i][8]==5&&m_MyPAIVec[i][9]==5&&m_MyPAIVec[i][10]==6&&m_MyPAIVec[i][11]==6&&m_MyPAIVec[i][12]==7&&m_MyPAIVec[i][13]==7)               {                   return true;               }               if(m_MyPAIVec[i][0]==2&&m_MyPAIVec[i][1]==2&&m_MyPAIVec[i][2]==3&&m_MyPAIVec[i][3]==3&&m_MyPAIVec[i][4]==4&&m_MyPAIVec[i][5]==4&&m_MyPAIVec[i][6]==5&&m_MyPAIVec[i][7]==5&&m_MyPAIVec[i][8]==6&&m_MyPAIVec[i][9]==6&&m_MyPAIVec[i][10]==7&&m_MyPAIVec[i][11]==7&&m_MyPAIVec[i][12]==8&&m_MyPAIVec[i][13]==8)               {                   return true;               }               if(m_MyPAIVec[i][0]==3&&m_MyPAIVec[i][1]==3&&m_MyPAIVec[i][2]==4&&m_MyPAIVec[i][3]==4&&m_MyPAIVec[i][4]==5&&m_MyPAIVec[i][5]==5&&m_MyPAIVec[i][6]==6&&m_MyPAIVec[i][7]==6&&m_MyPAIVec[i][8]==7&&m_MyPAIVec[i][9]==7&&m_MyPAIVec[i][10]==8&&m_MyPAIVec[i][11]==8&&m_MyPAIVec[i][12]==9&&m_MyPAIVec[i][13]==9)               {                   return true;               }           }       }          return false;   }      //檢測是否胡十三幺   bool    CMJ::Chekc13Y_HU()   {       if(m_13Y)       {           bool        i13YSize[13] ;           for(UINT i = 0 ; i < 13 ; i++ )           {               i13YSize[i]=false;           }           //中發白           vector<int>::iterator Iter;           for(Iter = m_MyPAIVec[0].begin();Iter != m_MyPAIVec[0].end(); Iter++ )           {               if((*Iter)==1)               {                   i13YSize[0]=true;               }               if((*Iter)==2)               {                   i13YSize[1]=true;               }               if((*Iter)==3)               {                   i13YSize[2]=true;               }           }           //東南西北風           for(Iter = m_MyPAIVec[1].begin();Iter != m_MyPAIVec[1].end(); Iter++ )           {               if((*Iter)==1)               {                   i13YSize[3]=true;               }               if((*Iter)==2)               {                   i13YSize[4]=true;               }               if((*Iter)==3)               {                   i13YSize[5]=true;               }               if((*Iter)==4)               {                   i13YSize[6]=true;               }           }           //一九萬           for(Iter = m_MyPAIVec[2].begin();Iter != m_MyPAIVec[2].end(); Iter++ )           {               if((*Iter)==1)               {                   i13YSize[7]=true;               }               if((*Iter)==9)               {                   i13YSize[8]=true;               }           }              //一九條           for(Iter = m_MyPAIVec[3].begin();Iter != m_MyPAIVec[3].end(); Iter++ )           {               if((*Iter)==1)               {                   i13YSize[9]=true;               }               if((*Iter)==9)               {                   i13YSize[10]=true;               }           }              //一九餅           for(Iter = m_MyPAIVec[4].begin();Iter != m_MyPAIVec[4].end(); Iter++ )           {               if((*Iter)==1)               {                   i13YSize[11]=true;               }               if((*Iter)==9)               {                   i13YSize[12]=true;               }           }           int icount = 0;           for(UINT i = 0 ; i < 13 ; i++ )           {               if(i13YSize[i]==true)               {                   icount++;               }           }           if(icount == 13)return true;          }       return false;   }   //檢測是否清幺九   bool    CMJ::CheckQY9_HU()   {          int iSize = 0;       int iCount = 0;       for(UINT i = 2 ; i < 5 ; i++ )       {           iSize = m_GangPAIVec[i].size();           iCount += iSize;           for(UINT j = 0 ; j < iSize ; j++ )           {               if(m_GangPAIVec[i][j]!=1||m_GangPAIVec[i][j]!=9)return false;           }       }          if(iCount == 12)       {           if(m_MyPAIVec[2].size()==2)           {               if(m_MyPAIVec[2][0]==1&&m_MyPAIVec[2][1]==1)return true;               if(m_MyPAIVec[2][0]==9&&m_MyPAIVec[2][1]==9)return true;           }              if(m_MyPAIVec[3].size()==3)           {               if(m_MyPAIVec[3][0]==1&&m_MyPAIVec[3][1]==1)return true;               if(m_MyPAIVec[3][0]==9&&m_MyPAIVec[3][1]==9)return true;           }              if(m_MyPAIVec[4].size()==4)           {               if(m_MyPAIVec[4][0]==1&&m_MyPAIVec[4][1]==1)return true;               if(m_MyPAIVec[4][0]==9&&m_MyPAIVec[4][1]==9)return true;           }       }          return false;      }   //檢測是否胡小四喜   bool    CMJ::CheckX4X_HU()   {       //東西南北四槓       if(m_GangPAIVec[1].size()==12)       {           //將牌的位置           int iJiangPos = -1;           //將牌           for(int i = 0 ; i < 6 ; i++ )           {               if(m_MyPAIVec[i].size()==5)               {                                      if(Check5Pai(m_MyPAIVec[i][0],m_MyPAIVec[i][1],m_MyPAIVec[i][2],m_MyPAIVec[i][3],m_MyPAIVec[i][4]))                   {                       return true;                   }               }               if(m_MyPAIVec[i].size()==2)               {                   //如果是將                   if(CheckAAPai(m_MyPAIVec[i][0],m_MyPAIVec[i][1]))                   {                       iJiangPos = i;                       break;                   }               }           }           //           if(iJiangPos>0)           {               for(int i = 0 ; i < 6 ; i++ )               {                   if(i!=iJiangPos)                   {                       if((m_MyPAIVec[i].size()==3))                       {                           if(Check3Pai(m_MyPAIVec[i][0],m_MyPAIVec[i][1],m_MyPAIVec[i][2]))return true;                       }                   }               }           }       }       return false;   }   //檢測是否胡小三元   bool    CMJ::CheckX3Y_HU()   {       //東西南北四槓       if(m_GangPAIVec[0].size()==8)       {              if(m_MyPAIVec[0].size()==5)           {               if(Check5Pai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2],m_MyPAIVec[0][3],m_MyPAIVec[0][4]))               {                   return true;               }               else               {                   return false;               }           }           else if(m_MyPAIVec[0].size()==2)           {               //如果是將               if(CheckAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1])==false)               {                   return false;               }           }           else           {               return false;           }           return CheckHU();          }       return false;   }   //檢測是否胡字一色   bool    CMJ::CheckZ1S_HU()   {          //只准有字       if(m_MyPAIVec[2].size()>0)return false;       if(m_MyPAIVec[3].size()>0)return false;       if(m_MyPAIVec[4].size()>0)return false;       if(m_MyPAIVec[5].size()>0)return false;       if(m_ChiPAIVec[2].size()>0)return false;       if(m_ChiPAIVec[3].size()>0)return false;       if(m_ChiPAIVec[4].size()>0)return false;       if(m_ChiPAIVec[5].size()>0)return false;       if(m_PengPAIVec[2].size()>0)return false;       if(m_PengPAIVec[3].size()>0)return false;       if(m_PengPAIVec[4].size()>0)return false;       if(m_PengPAIVec[5].size()>0)return false;       if(m_GangPAIVec[2].size()>0)return false;       if(m_GangPAIVec[3].size()>0)return false;       if(m_GangPAIVec[4].size()>0)return false;       if(m_GangPAIVec[5].size()>0)return false;       int iSize = m_MyPAIVec[0].size();       if(iSize > 0)       {           if(iSize == 2)           {               if(m_MyPAIVec[0][0]==m_MyPAIVec[0][1])               {                   iSize = m_MyPAIVec[1].size();                   if(iSize == 0)return true;                   if(iSize == 3)                   {                       if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2]))return true;                   }               }           }          }       return false;   }   //檢測是否四暗刻   bool    CMJ::Check4AK_HU()   {       if(m_4AK)       {           //將牌           for(int i = 0 ; i < 6 ; i++ )           {               if(m_MyPAIVec[i].size()==2)               {                   //如果是將                   if(m_MyPAIVec[i][0] == m_MyPAIVec[i][1])                   {                       return true;                   }               }           }       }       return false;   }      //檢測是否一色雙龍會   bool    CMJ::Check1S2LH_HU()   {       //萬,條,餅       for(UINT i = 0 ; i <= 4; i++ )       {           int iType = i;           if(m_MyPAIVec[iType].size()==14)           {                  if(m_MyPAIVec[iType][0]==1&&m_MyPAIVec[iType][1]==1)               {                  }               else               {                   return false;               }               if(m_MyPAIVec[iType][2]==2&&m_MyPAIVec[iType][3]==2)               {                  }               else               {                   return false;               }               if(m_MyPAIVec[iType][4]==3&&m_MyPAIVec[iType][5]==3)               {                  }               else               {                   return false;               }               if(m_MyPAIVec[iType][6]==5&&m_MyPAIVec[iType][7]==5)               {                  }               else               {                   return false;               }               if(m_MyPAIVec[iType][8]==7&&m_MyPAIVec[iType][9]==7)               {                  }               else               {                   return false;               }               if(m_MyPAIVec[iType][10]==8&&m_MyPAIVec[iType][11]==8)               {                  }               else               {                   return false;               }               if(m_MyPAIVec[iType][12]==9&&m_MyPAIVec[iType][13]==9)               {                  }               else               {                   return false;               }                  return true;           }       }       return false;   }      //檢測是否一色四同順   bool    CMJ::Check1S4TS_HU()   {       //萬,條,餅       for(UINT i = 0 ; i <= 4; i++ )       {           int iType = i;           //吃過的順           int iSize1  =  m_ChiPAIVec[iType].size();           //剩余牌牆中的順           int iSize2  =  m_MyPAIVec[iType].size();           //萬           if(iSize1 + iSize2 >= 12)           {               //無吃的順               if(iSize1==0)               {                   if(iSize2==12)                   {                       //三連暗槓成順                       if(CheckAAAABBBBCCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11]))return CheckHU();                       return false;                   }                   if(iSize2==14)                   {                       //三連暗槓成順                       if((m_MyPAIVec[iType][12]==(m_MyPAIVec[iType][13]))&&CheckAAAABBBBCCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11]))return true;                       //三連暗槓成順                       if((m_MyPAIVec[iType][0]==(m_MyPAIVec[iType][1]))&&CheckAAAABBBBCCCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11],m_MyPAIVec[iType][12],m_MyPAIVec[iType][13]))return true;                       return false;                   }               }               //吃到一個順               if(iSize1==3)               {                   if(iSize2==9)                   {                       //三連高壓                       if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])                           {                               return CheckHU();                           }                       }                       return false;                   }                   if(iSize2==11)                   {                          //三連高壓                       if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8]))                       {                           if(m_MyPAIVec[iType][9]==m_MyPAIVec[iType][10]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])                           {                               return true;                           }                       }                       //三連高壓                       if(CheckAAABBBCCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10]))                       {                           if(m_MyPAIVec[iType][0]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][5]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][8])                           {                               return true;                           }                       }                          return false;                   }               }               //吃到二個順               if(iSize1==6)               {                   if(iSize2==6)                   {                       //三連對                       if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][4])                               {                                   return CheckHU();                               }                           }                       }                       return false;                   }                   if(iSize2==8)                   {                       //三連對                       if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5]))                       {                           if(m_MyPAIVec[iType][6]==m_MyPAIVec[iType][7]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][4])                               {                                   return true;                               }                              }                       }                          //三連對                       if(CheckAABBCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7]))                       {                           if(m_MyPAIVec[iType][0]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][6])                               {                                   return true;                               }                           }                       }                          return false;                   }               }               //吃到三個順               if(iSize1==9)               {                   if(iSize2==3)                   {                       //順子                       if(CheckABCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][2])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][2])                               {                                   if(m_ChiPAIVec[iType][6]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][7]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][8]==m_MyPAIVec[iType][2])                                   {                                                      return CheckHU();                                   }                               }                           }                       }                       return false;                   }                   if(iSize2==5)                   {                       //順子                       if(CheckABCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2]))                       {                           if(m_MyPAIVec[iType][3]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][2])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][2])                               {                                   if(m_ChiPAIVec[iType][6]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][7]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][8]==m_MyPAIVec[iType][2])                                   {                                          return true;                                   }                               }                           }                       }                          //順子                       if(CheckABCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4]))                       {                           if(m_MyPAIVec[iType][0]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][4])                               {                                   if(m_ChiPAIVec[iType][6]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][7]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][8]==m_MyPAIVec[iType][4])                                   {                                          return true;                                   }                                  }                           }                       }                       return false;                   }               }                  //吃到三連順               if(iSize1==12)               {                   if((m_ChiPAIVec[iType][0]==m_ChiPAIVec[iType][3])&&(m_ChiPAIVec[iType][3]==m_ChiPAIVec[iType][6])&&(m_ChiPAIVec[iType][6]==m_ChiPAIVec[iType][9]))                   {                       return CheckHU();                   }                   return false;               }           }          }       return false;   }      //檢測是否一色四節高   bool    CMJ::Check1S4JG_HU()   {       //萬,條,餅       for(UINT i = 2 ; i <= 4 ; i++)       {           int iType = i;           if(m_GangPAIVec[iType].size()==16)           {               if((m_GangPAIVec[iType][0]==m_GangPAIVec[iType][4]-1)&&(m_GangPAIVec[iType][4]==m_GangPAIVec[iType][8]-1)&&(m_GangPAIVec[iType][8]==m_GangPAIVec[iType][12]-1))               {                   return CheckHU();               }           }       }       return false;   }   //檢測是否一色四步高   bool    CMJ::Check1S4BG_HU()   {       /*//萬      if(m_GangPAIVec[2].size()==16)      {          if((m_GangPAIVec[2][0]==m_GangPAIVec[2][4]-1)&&(m_GangPAIVec[2][4]==m_GangPAIVec[2][8]-1)&&(m_GangPAIVec[2][8]==m_GangPAIVec[2][12]-1))          {              return CheckHU();          }      }*/       return false;   }   //檢測是否三槓   bool    CMJ::Check3Gang_HU()   {       int iSize = 0;       for(UINT i = 0 ; i < 6 ; i++ )       {           iSize = m_GangPAIVec[i].size();       }          if(iSize == 12)       {           //將牌           return CheckHU();                  }       return false;   }   //檢測是否混幺九   bool    CMJ::CheckHY9_HU()   {       return false;   }   //檢測是否七對   bool    CMJ::Check7D_HU()   {       int iDoubleNum = 0 ;       for(UINT i = 0 ; i < 6 ; i++ )       {           UINT iSize = m_MyPAIVec[i].size();           if(iSize%2 ==1||iSize==0)return false;//如果是奇數肯定不是對           for(UINT j = 0 ; j < iSize-1 ; j++)           {               if(m_MyPAIVec[i][j]==m_MyPAIVec[i][j+1])               {                   iDoubleNum++;                   j++;               }           }       }       if(iDoubleNum==7)return true;       return false;   }   //檢測是否七星不靠   bool    CMJ::Check7XBK_HU()   {       bool        bIs7XBK[14] ;       for(UINT i = 0 ; i < 14 ; i++ )       {           bIs7XBK[i]=false;       }       //中發白       vector<int>::iterator Iter;       if(m_MyPAIVec[0].size()!=3)return false;       for(Iter = m_MyPAIVec[0].begin();Iter != m_MyPAIVec[0].end(); Iter++ )       {           if((*Iter)==1)           {               bIs7XBK[7]=true;           }           if((*Iter)==2)           {               bIs7XBK[8]=true;           }           if((*Iter)==3)           {               bIs7XBK[9]=true;           }       }       //東南西北風       if(m_MyPAIVec[1].size()!=4)return false;       for(Iter = m_MyPAIVec[1].begin();Iter != m_MyPAIVec[1].end(); Iter++ )       {           if((*Iter)==1)           {               bIs7XBK[10]=true;           }           if((*Iter)==2)           {               bIs7XBK[11]=true;           }           if((*Iter)==3)           {               bIs7XBK[12]=true;           }           if((*Iter)==4)           {               bIs7XBK[13]=true;           }       }       //萬,條,餅       for(UINT i = 2 ; i <= 4 ; i++)       {           if(m_MyPAIVec[i].size()==3)           {               if(m_MyPAIVec[i][0]==1&&m_MyPAIVec[i][1]==4&&m_MyPAIVec[i][2]==7)               {                   bIs7XBK[0]=true;                   bIs7XBK[3]=true;                   bIs7XBK[6]=true;               }           }           else if(m_MyPAIVec[2].size()==2)           {               if(m_MyPAIVec[i][0]==2&&m_MyPAIVec[i][1]==5)               {                   bIs7XBK[1]=true;                   bIs7XBK[4]=true;               }               else if(m_MyPAIVec[i][0]==3&&m_MyPAIVec[i][1]==6)               {                   bIs7XBK[2]=true;                   bIs7XBK[5]=true;               }           }           else           {               return false;           }       }       bool t_Result = true;       for(UINT i = 0 ; i < 14 ; i++ )       {           if(bIs7XBK[i]==false)t_Result=false;       }       if(t_Result)return true;          for(UINT i = 2 ; i <= 4 ; i++)       {           if(m_MyPAIVec[i].size()==3)           {               if(m_MyPAIVec[i][0]==2&&m_MyPAIVec[i][1]==5&&m_MyPAIVec[i][2]==8)               {                   bIs7XBK[0]=true;                   bIs7XBK[3]=true;                   bIs7XBK[6]=true;               }           }           else if(m_MyPAIVec[2].size()==2)           {               if(m_MyPAIVec[i][0]==3&&m_MyPAIVec[i][1]==6)               {                   bIs7XBK[1]=true;                   bIs7XBK[4]=true;               }               else if(m_MyPAIVec[i][0]==4&&m_MyPAIVec[i][1]==7)               {                   bIs7XBK[2]=true;                   bIs7XBK[5]=true;               }           }           else           {               return false;           }       }       t_Result = true;       for(UINT i = 0 ; i < 14 ; i++ )       {           if(bIs7XBK[i]==false)t_Result=false;       }       if(t_Result)return true;          for(UINT i = 2 ; i <= 4 ; i++)       {           if(m_MyPAIVec[i].size()==3)           {               if(m_MyPAIVec[i][0]==3&&m_MyPAIVec[i][1]==6&&m_MyPAIVec[i][2]==9)               {                   bIs7XBK[0]=true;                   bIs7XBK[3]=true;                   bIs7XBK[6]=true;               }           }           else if(m_MyPAIVec[2].size()==2)           {               if(m_MyPAIVec[i][0]==4&&m_MyPAIVec[i][1]==7)               {                   bIs7XBK[1]=true;                   bIs7XBK[4]=true;               }               else if(m_MyPAIVec[i][0]==5&&m_MyPAIVec[i][1]==8)               {                   bIs7XBK[2]=true;                   bIs7XBK[5]=true;               }           }           else           {               return false;           }       }          t_Result = true;       for(UINT i = 0 ; i < 14 ; i++ )       {           if(bIs7XBK[i]==false)t_Result=false;       }       if(t_Result)return true;          return false;   }   //檢測是否全雙刻   bool    CMJ::CheckQSK_HU()   {       //萬,條,餅       for(UINT i = 2 ; i <= 4 ; i++)       {           int iType = i;           if(m_GangPAIVec[iType].size()==16)           {               if(m_GangPAIVec[iType][0]==2&&m_GangPAIVec[iType][4]==4&&m_GangPAIVec[iType][8]==6&&m_GangPAIVec[iType][12]==8)               {                   return CheckHU();               }           }       }       return false;   }   //清一色   bool    CMJ::CheckQ1S_HU()   {          if(m_MyPAIVec[0].empty()==false)return false;       if(m_MyPAIVec[1].empty()==false)return false;       if(m_ChiPAIVec[0].empty()==false)return false;       if(m_ChiPAIVec[1].empty()==false)return false;       if(m_PengPAIVec[0].empty()==false)return false;       if(m_PengPAIVec[1].empty()==false)return false;       if(m_GangPAIVec[0].empty()==false)return false;       if(m_GangPAIVec[1].empty()==false)return false;       //清萬       if(m_MyPAIVec[2].empty()==false)       {           if(m_MyPAIVec[3].empty()==false)return false;           if(m_MyPAIVec[4].empty()==false)return false;           if(m_ChiPAIVec[3].empty()==false)return false;           if(m_ChiPAIVec[4].empty()==false)return false;           if(m_PengPAIVec[3].empty()==false)return false;           if(m_PengPAIVec[4].empty()==false)return false;           if(m_GangPAIVec[3].empty()==false)return false;           if(m_GangPAIVec[4].empty()==false)return false;           return CheckHU();       }       //清條       if(m_MyPAIVec[3].empty()==false)       {           if(m_MyPAIVec[2].empty()==false)return false;           if(m_MyPAIVec[4].empty()==false)return false;           if(m_ChiPAIVec[2].empty()==false)return false;           if(m_ChiPAIVec[4].empty()==false)return false;           if(m_PengPAIVec[2].empty()==false)return false;           if(m_PengPAIVec[4].empty()==false)return false;           if(m_GangPAIVec[2].empty()==false)return false;           if(m_GangPAIVec[4].empty()==false)return false;           return CheckHU();       }       //清餅       if(m_MyPAIVec[4].empty()==false)       {           if(m_MyPAIVec[2].empty()==false)return false;           if(m_MyPAIVec[3].empty()==false)return false;           if(m_ChiPAIVec[2].empty()==false)return false;           if(m_ChiPAIVec[3].empty()==false)return false;           if(m_PengPAIVec[2].empty()==false)return false;           if(m_PengPAIVec[3].empty()==false)return false;           if(m_GangPAIVec[2].empty()==false)return false;           if(m_GangPAIVec[3].empty()==false)return false;           return CheckHU();       }       return false;   }   //檢測是否一色三同順   bool    CMJ::Check1S3TS_HU()   {       //萬條餅       for(UINT i = 2 ; i <= 4 ; i++ )       {           int iType = i;           //吃過的順           int iSize1  =  m_ChiPAIVec[iType].size();           //剩余牌牆中的順           int iSize2  =  m_MyPAIVec[iType].size();           if(iSize1 + iSize2 >= 9)           {               //無吃的順               if(iSize1==0)               {                   if(iSize2==9)                   {                       //三連高壓                       if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8]))                       {                           return CheckHU();                       }                       return false;                   }                   if(iSize2==11)                   {                       //三連高壓                       if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8])&&CheckAAPai(m_MyPAIVec[iType][9],m_MyPAIVec[iType][10]))                       {                           return true;                       }                       //三連高壓                       if(CheckAAABBBCCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10])&&CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1]))                       {                           return true;                       }                       return false;                   }                   if(iSize2==12)                   {                       //三連高壓                       if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8])&&Check3Pai(m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11]))                       {                           return CheckHU();                       }                       //三連高壓                       if(CheckAAABBBCCCPai(m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11])&&Check3Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2]))                       {                           return CheckHU();                       }                          return false;                   }                   if(iSize2==14)                   {                       //三連順(前)                       if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8])&&Check5Pai(m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11],m_MyPAIVec[iType][12],m_MyPAIVec[iType][13]))                       {                           return true;                       }                       //三連順(中)                       if(CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1])&&CheckAAABBBCCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10])&&Check3Pai(m_MyPAIVec[iType][11],m_MyPAIVec[iType][12],m_MyPAIVec[iType][13]))                       {                           return true;                       }                          //三連順(中)                       if(Check3Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2])&&CheckAAABBBCCCPai(m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11])&&CheckAAPai(m_MyPAIVec[iType][12],m_MyPAIVec[iType][13]))                       {                           return true;                       }                          //三連順(後)                       if(CheckAAABBBCCCPai(m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11],m_MyPAIVec[iType][12],m_MyPAIVec[iType][13])&&Check5Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4]))                       {                           return true;                       }                       return false;                   }               }               //吃到一個順               if(iSize1==3)               {                   if(iSize2==6)                   {                       //三連對                       if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][2])                           {                               return CheckHU();                           }                       }                   }                   if(iSize2==8)                   {                       //三連對(前)                       if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5])&&CheckAAPai(m_MyPAIVec[iType][6],m_MyPAIVec[iType][7]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])                           {                               return true;                           }                       }                       //三連對(後)                       if(CheckAABBCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7])&&CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])                           {                               return true;                           }                       }                   }                   if(iSize2==9)                   {                       //三連對(前)                       if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5])&&Check3Pai(m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])                           {                               return CheckHU();                           }                       }                       //三連對(後)                       if(CheckAABBCCPai(m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8])&&Check3Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][5]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][7])                           {                               return CheckHU();                           }                       }                   }                   if(iSize2==11)                   {                       //三連對(前)                       if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5])&&Check5Pai(m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])                           {                               return true;                           }                       }                       //三連對(中)                       if(CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1])&&CheckAABBCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7])&&Check3Pai(m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])                           {                               return true;                           }                       }                       //三連對(中)                       if(Check3Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2])&&CheckAABBCCPai(m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8])&&CheckAAPai(m_MyPAIVec[iType][9],m_MyPAIVec[iType][10]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][5]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][7])                           {                               return true;                           }                       }                       //三連對(前)                       if(CheckAABBCCPai(m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10])&&Check5Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][5]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][7]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][9])                           {                               return true;                           }                       }                   }               }               //吃到二個順               if(iSize1==6)               {                   if(iSize2==3)                   {                       //順子                       if(CheckABCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][2])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][2])                               {                                   return CheckHU();                               }                           }                       }                   }                   if(iSize2==5)                   {                       //順子(前)                       if(CheckABCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2])&&CheckAAPai(m_MyPAIVec[iType][3],m_MyPAIVec[iType][4]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][2])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][2])                               {                                   return true;                               }                           }                       }                       //順子(後)                       if(CheckABCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4])&&CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][4])                               {                                   return true;                               }                           }                       }                   }                   if(iSize2==6)                   {                       //三連對                       if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][5])                               {                                   return CheckHU();                               }                           }                       }                   }                   if(iSize2==8)                   {                       //三連對(前)                       if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5])&&CheckAAPai(m_MyPAIVec[iType][6],m_MyPAIVec[iType][7]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][5])                               {                                   return true;                               }                           }                       }                       //三連對(後)                       if(CheckAABBCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7])&&CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1]))                       {                           if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])                           {                               if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][5]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][7])                               {                                   return true;                               }                           }                       }                   }               }               //吃到三個順               if(iSize1==9)               {                   if((m_ChiPAIVec[2][0]==m_ChiPAIVec[iType][3])&&(m_ChiPAIVec[iType][3]==m_ChiPAIVec[iType][6]))                   {                       return CheckHU();                   }               }           }       }       return false;   }   //檢測是否一色三節高   bool    CMJ::Check1S3JG_HU()   {       //萬,條,餅       for(UINT i = 2 ; i <= 4 ; i++)       {           int iType = i;           if(m_GangPAIVec[iType].size()==12)           {               if((m_GangPAIVec[iType][0]==m_GangPAIVec[iType][4]-1)&&(m_GangPAIVec[iType][4]==m_GangPAIVec[iType][8]-1))               {                   return CheckHU();               }           }       }       return false;   }   //檢測是否全大   bool    CMJ::CheckQD_HU()   {       //劍牌,風牌       if(m_MyPAIVec[0].empty()==false)return false;       if(m_MyPAIVec[1].empty()==false)return false;       if(m_ChiPAIVec[0].empty()==false)return false;       if(m_ChiPAIVec[1].empty()==false)return false;       if(m_PengPAIVec[0].empty()==false)return false;       if(m_PengPAIVec[1].empty()==false)return false;       if(m_GangPAIVec[0].empty()==false)return false;       if(m_GangPAIVec[1].empty()==false)return false;              //萬,條,餅       for(UINT i = 2 ; i <= 4 ; i++ )       {           if(m_MyPAIVec[i].empty()==false)           {               //剩余牌牆               int iSize = m_MyPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_MyPAIVec[i][j]<7)return false;               }               //吃               iSize = m_ChiPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_ChiPAIVec[i][j]<7)return false;               }               //碰               iSize = m_PengPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_PengPAIVec[i][j]<7)return false;               }               //槓               iSize = m_GangPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_GangPAIVec[i][j]<7)return false;               }           }       }       return CheckHU();   }      //檢測是否全中   bool    CMJ::CheckQZ_HU()   {   //劍牌,風牌       if(m_MyPAIVec[0].empty()==false)return false;       if(m_MyPAIVec[1].empty()==false)return false;       if(m_ChiPAIVec[0].empty()==false)return false;       if(m_ChiPAIVec[1].empty()==false)return false;       if(m_PengPAIVec[0].empty()==false)return false;       if(m_PengPAIVec[1].empty()==false)return false;       if(m_GangPAIVec[0].empty()==false)return false;       if(m_GangPAIVec[1].empty()==false)return false;              //萬,條,餅       for(UINT i = 2 ; i <= 4 ; i++ )       {           if(m_MyPAIVec[i].empty()==false)           {               //剩余牌牆               int iSize = m_MyPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_MyPAIVec[i][j]<4)return false;                   if(m_MyPAIVec[i][j]>6)return false;               }               //吃               iSize = m_ChiPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_ChiPAIVec[i][j]<4)return false;                   if(m_ChiPAIVec[i][j]>6)return false;               }               //碰               iSize = m_PengPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_PengPAIVec[i][j]<4)return false;                   if(m_PengPAIVec[i][j]>6)return false;               }               //槓               iSize = m_GangPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_GangPAIVec[i][j]<4)return false;                   if(m_GangPAIVec[i][j]>6)return false;               }           }       }       return CheckHU();   }      //檢測是否全小   bool    CMJ::CheckQX_HU()   {       //劍牌,風牌       if(m_MyPAIVec[0].empty()==false)return false;       if(m_MyPAIVec[1].empty()==false)return false;       if(m_ChiPAIVec[0].empty()==false)return false;       if(m_ChiPAIVec[1].empty()==false)return false;       if(m_PengPAIVec[0].empty()==false)return false;       if(m_PengPAIVec[1].empty()==false)return false;       if(m_GangPAIVec[0].empty()==false)return false;       if(m_GangPAIVec[1].empty()==false)return false;              //萬,條,餅       for(UINT i = 2 ; i <= 4 ; i++ )       {           if(m_MyPAIVec[i].empty()==false)           {               //剩余牌牆               int iSize = m_MyPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_MyPAIVec[i][j]>3)return false;               }               //吃               iSize = m_ChiPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_ChiPAIVec[i][j]>3)return false;               }               //碰               iSize = m_PengPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_PengPAIVec[i][j]>3)return false;               }               //槓               iSize = m_GangPAIVec[i].size();               for( UINT j = 0 ; j < iSize ; j++ )               {                   if(m_GangPAIVec[i][j]>3)return false;               }           }       }       return CheckHU();   }   //檢測是否青龍   bool    CMJ::CheckQL_HU()   {       //花色       int iColorNum = 0;       //萬,條,餅       for(UINT i = 2 ; i <= 4 ; i++ )       {           if(m_MyPAIVec[i].empty()==false)           {               iColorNum++;                  if(m_MyPAIVec[i].size()==9)               {                   for(UINT j = 0 ;j < 9 ;j++)                   {                       if(m_MyPAIVec[i][j] != j)return false;                   }               }           }       }       if(iColorNum==1)return CheckHU();       return false;   }   //檢測是否三色雙龍會   bool    CMJ::Check3S2LH_HU()   {       //五萬為雙龍       if(m_MyPAIVec[2].size()==2)       {           //雙龍           if(m_MyPAIVec[2][0]==5&&m_MyPAIVec[2][1]==5)           {               //老少副               if(m_MyPAIVec[3].size()==6&&m_MyPAIVec[4].size()==6)               {                   if(m_MyPAIVec[3][0]==1&&m_MyPAIVec[3][1]==2&&m_MyPAIVec[3][2]==3&&m_MyPAIVec[3][3]==7&&m_MyPAIVec[3][4]==8&&m_MyPAIVec[3][5]==9)                   {                       if(m_MyPAIVec[4][0]==1&&m_MyPAIVec[4][1]==2&&m_MyPAIVec[4][2]==3&&m_MyPAIVec[4][3]==7&&m_MyPAIVec[4][4]==8&&m_MyPAIVec[4][5]==9)                       {                           return true;                       }                   }               }           }       }          //五條為雙龍       if(m_MyPAIVec[3].size()==2)       {           //雙龍           if(m_MyPAIVec[3][0]==5&&m_MyPAIVec[3][1]==5)           {               //老少副               if(m_MyPAIVec[2].size()==6&&m_MyPAIVec[4].size()==6)               {                   if(m_MyPAIVec[2][0]==1&&m_MyPAIVec[2][1]==2&&m_MyPAIVec[2][2]==3&&m_MyPAIVec[2][3]==7&&m_MyPAIVec[2][4]==8&&m_MyPAIVec[2][5]==9)                   {                       if(m_MyPAIVec[4][0]==1&&m_MyPAIVec[4][1]==2&&m_MyPAIVec[4][2]==3&&m_MyPAIVec[4][3]==7&&m_MyPAIVec[4][4]==8&&m_MyPAIVec[4][5]==9)                       {                           return true;                       }                   }               }           }       }          //五餅為雙龍       if(m_MyPAIVec[4].size()==2)       {           //雙龍           if(m_MyPAIVec[4][0]==5&&m_MyPAIVec[4][1]==5)           {               //老少副               if(m_MyPAIVec[2].size()==6&&m_MyPAIVec[3].size()==6)               {                   if(m_MyPAIVec[2][0]==1&&m_MyPAIVec[2][1]==2&&m_MyPAIVec[2][2]==3&&m_MyPAIVec[2][3]==7&&m_MyPAIVec[2][4]==8&&m_MyPAIVec[2][5]==9)                   {                       if(m_MyPAIVec[3][0]==1&&m_MyPAIVec[3][1]==2&&m_MyPAIVec[3][2]==3&&m_MyPAIVec[3][3]==7&&m_MyPAIVec[3][4]==8&&m_MyPAIVec[3][5]==9)                       {                           return true;                       }                   }               }           }       }       return false;   }      //檢測是否一色三步高   bool    CMJ::Check1S3BG_HU()   {       return false;   }   //全帶五   bool    CMJ::CheckQD5_HU()   {       //劍牌,風牌       if(m_MyPAIVec[0].empty()==false)return false;       if(m_MyPAIVec[1].empty()==false)return false;       if(m_ChiPAIVec[0].empty()==false)return false;       if(m_ChiPAIVec[1].empty()==false)return false;       if(m_PengPAIVec[0].empty()==false)return false;       if(m_PengPAIVec[1].empty()==false)return false;       if(m_GangPAIVec[0].empty()==false)return false;       if(m_GangPAIVec[1].empty()==false)return false;       return false;   }   //三同刻   bool    CMJ::Check3TK_HU()   {       /*if(m_GangPAIVec[2].size()==4)      {          //萬,條,餅          for(UINT i = 3 ; i <= 4 ; i++ )          {              if(m_GangPAIVec[i].size()==4)              {                  if(m_GangPAIVec[2][0]!=m_GangPAIVec[i][0])                  {                      return false;                  }              }          }             }*/       return false;      }   //三暗刻   bool    CMJ::Check3AK_HU()   {       return false;   }   //單釣將   bool    CMJ::CheckDDJ_HU()   {       int count = 0;       for(UINT i = 0 ; i < 6 ; i++ )       {           count += m_MyPAIVec[i].size();       }       if(count==2)       {           if(m_MyPAIVec[m_LastPAI.m_Type].size()==2)           {               if(m_MyPAIVec[m_LastPAI.m_Type][0]==m_MyPAIVec[m_LastPAI.m_Type][1])return true;           }       }       return false;   }   //檢測是否聽十三幺   bool    CMJ::Check13Y_TING()   {       bool        i13YSize[13] ;       for(UINT i = 0 ; i < 13 ; i++ )       {           i13YSize[i]=false;       }       //中發白       vector<int>::iterator Iter;       for(Iter = m_MyPAIVec[0].begin();Iter != m_MyPAIVec[0].end(); Iter++ )       {           if((*Iter)==1)           {               i13YSize[0]=true;           }           if((*Iter)==2)           {               i13YSize[1]=true;           }           if((*Iter)==3)           {               i13YSize[2]=true;           }       }       //東南西北風       for(Iter = m_MyPAIVec[1].begin();Iter != m_MyPAIVec[1].end(); Iter++ )       {           if((*Iter)==1)           {               i13YSize[3]=true;           }           if((*Iter)==2)           {               i13YSize[4]=true;           }           if((*Iter)==3)           {               i13YSize[5]=true;           }           if((*Iter)==4)           {               i13YSize[6]=true;           }       }       //一九萬       for(Iter = m_MyPAIVec[2].begin();Iter != m_MyPAIVec[2].end(); Iter++ )       {           if((*Iter)==1)           {               i13YSize[7]=true;           }           if((*Iter)==9)           {               i13YSize[8]=true;           }       }          //一九條       for(Iter = m_MyPAIVec[3].begin();Iter != m_MyPAIVec[3].end(); Iter++ )       {           if((*Iter)==1)           {               i13YSize[9]=true;           }           if((*Iter)==9)           {               i13YSize[10]=true;           }       }              //一九餅       for(Iter = m_MyPAIVec[4].begin();Iter != m_MyPAIVec[4].end(); Iter++ )       {           if((*Iter)==1)           {               i13YSize[11]=true;           }           if((*Iter)==9)           {               i13YSize[12]=true;           }       }       int icount = 0;       for(UINT i = 0 ; i < 13 ; i++ )       {           if(i13YSize[i]==true)           {               icount++;           }       }       if(icount >=12)return true;       return  false;   }   //檢測是否聽四暗刻   bool    CMJ::Check4AK_TING()   {       if(m_AKNum==4)return true;       return false;   }   //檢測胡   bool    CMJ::CheckHU()   {       bool t_Ok = false;       int iJiangNum = 0;          int iSize = m_MyPAIVec[0].size();       if(iSize>0)       {           //中發白           if(iSize==2)           {               if(!CheckAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==3)           {               if(!CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2]))               {                   return false;               }           }           else if(iSize==5)           {               if(CheckAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1])&&CheckAAAPai(m_MyPAIVec[0][2],m_MyPAIVec[0][3],m_MyPAIVec[0][4]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4]))               {                   iJiangNum++ ;               }               else               {                   return false;               }           }           else if(iSize==8)           {               if(CheckAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1])&&CheckAAAPai(m_MyPAIVec[0][2],m_MyPAIVec[0][3],m_MyPAIVec[0][4])&&CheckAAAPai(m_MyPAIVec[0][5],m_MyPAIVec[0][6],m_MyPAIVec[0][7]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4])&&CheckAAAPai(m_MyPAIVec[0][5],m_MyPAIVec[0][6],m_MyPAIVec[0][7]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4],m_MyPAIVec[0][5])&&CheckAAPai(m_MyPAIVec[0][6],m_MyPAIVec[0][7]))               {                   iJiangNum++ ;               }               else               {                   return false;               }           }           else if(iSize==11)           {               if(CheckAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1])&&CheckAAAPai(m_MyPAIVec[0][2],m_MyPAIVec[0][3],m_MyPAIVec[0][4])&&CheckAAAPai(m_MyPAIVec[0][5],m_MyPAIVec[0][6],m_MyPAIVec[0][7])&&CheckAAAPai(m_MyPAIVec[0][8],m_MyPAIVec[0][9],m_MyPAIVec[0][10]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4])&&CheckAAAPai(m_MyPAIVec[0][5],m_MyPAIVec[0][6],m_MyPAIVec[0][7])&&CheckAAAPai(m_MyPAIVec[0][8],m_MyPAIVec[0][9],m_MyPAIVec[0][10]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4],m_MyPAIVec[0][5])&&CheckAAPai(m_MyPAIVec[0][6],m_MyPAIVec[0][7])&&CheckAAAPai(m_MyPAIVec[0][8],m_MyPAIVec[0][9],m_MyPAIVec[0][10]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4],m_MyPAIVec[0][5])&&CheckAAAPai(m_MyPAIVec[0][6],m_MyPAIVec[0][7],m_MyPAIVec[0][8])&&CheckAAPai(m_MyPAIVec[0][9],m_MyPAIVec[0][10]))               {                   iJiangNum++ ;               }               else               {                   return false;               }           }           else           {               return false;           }          }       //東南西北       iSize = m_MyPAIVec[1].size();       if(iSize>0)       {           if(iSize==2)           {               if(!CheckAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==3)           {               if(!CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2]))               {                   return false;               }              }           else if(iSize==5)           {               if(CheckAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1])&&CheckAAAPai(m_MyPAIVec[1][2],m_MyPAIVec[1][3],m_MyPAIVec[1][4]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4]))               {                   iJiangNum++ ;               }               else               {                   return false;               }           }           else if(iSize==8)           {               if(CheckAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1])&&CheckAAAPai(m_MyPAIVec[1][2],m_MyPAIVec[1][3],m_MyPAIVec[1][4])&&CheckAAAPai(m_MyPAIVec[1][5],m_MyPAIVec[1][6],m_MyPAIVec[1][7]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4])&&CheckAAAPai(m_MyPAIVec[1][5],m_MyPAIVec[1][6],m_MyPAIVec[1][7]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4],m_MyPAIVec[1][5])&&CheckAAPai(m_MyPAIVec[1][6],m_MyPAIVec[1][7]))               {                   iJiangNum++ ;               }               else               {                   return false;               }           }           else if(iSize==11)           {               if(CheckAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1])&&CheckAAAPai(m_MyPAIVec[1][2],m_MyPAIVec[1][3],m_MyPAIVec[1][4])&&CheckAAAPai(m_MyPAIVec[1][5],m_MyPAIVec[1][6],m_MyPAIVec[1][7])&&CheckAAAPai(m_MyPAIVec[1][8],m_MyPAIVec[1][9],m_MyPAIVec[1][10]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4])&&CheckAAAPai(m_MyPAIVec[1][5],m_MyPAIVec[1][6],m_MyPAIVec[1][7])&&CheckAAAPai(m_MyPAIVec[1][8],m_MyPAIVec[1][9],m_MyPAIVec[1][10]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4],m_MyPAIVec[1][5])&&CheckAAPai(m_MyPAIVec[1][6],m_MyPAIVec[1][7])&&CheckAAAPai(m_MyPAIVec[1][8],m_MyPAIVec[1][9],m_MyPAIVec[1][10]))               {                   iJiangNum++ ;               }               else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4],m_MyPAIVec[1][5])&&CheckAAAPai(m_MyPAIVec[1][6],m_MyPAIVec[1][7],m_MyPAIVec[1][8])&&CheckAAPai(m_MyPAIVec[1][9],m_MyPAIVec[1][10]))               {                   iJiangNum++ ;               }               else               {                   return false;               }           }           else           {               return false;           }       }       //萬       iSize = m_MyPAIVec[2].size();       if(iSize>0)       {           if(iSize==2)           {               if(!CheckAAPai(m_MyPAIVec[2][0],m_MyPAIVec[2][1]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==3)           {               if(!CheckAAAPai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2]))               {                   if(!CheckABCPai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2]))                   {                       return false;                   }               }           }           else if(iSize==5)           {               if(!Check5Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==6)           {               if(!Check6Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5]))               {                   return false;               }           }           else if(iSize==8)           {               if(!Check8Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5],m_MyPAIVec[2][6],m_MyPAIVec[2][7]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==9)           {               if(!Check9Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5],m_MyPAIVec[2][6],m_MyPAIVec[2][7],m_MyPAIVec[2][8]))               {                   return false;               }           }           else if(iSize==11)           {               if(!Check11Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5],m_MyPAIVec[2][6],m_MyPAIVec[2][7],m_MyPAIVec[2][8],m_MyPAIVec[2][9],m_MyPAIVec[2][10]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==12)           {               if(!Check12Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5],m_MyPAIVec[2][6],m_MyPAIVec[2][7],m_MyPAIVec[2][8],m_MyPAIVec[2][9],m_MyPAIVec[2][10],m_MyPAIVec[2][11]))               {                   return false;               }           }           else if(iSize==14)           {               if(!Check14Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5],m_MyPAIVec[2][6],m_MyPAIVec[2][7],m_MyPAIVec[2][8],m_MyPAIVec[2][9],m_MyPAIVec[2][10],m_MyPAIVec[2][11],m_MyPAIVec[2][12],m_MyPAIVec[2][13]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else           {               return false;           }       }          //條       iSize = m_MyPAIVec[3].size();       if(iSize>0)       {           if(iSize==2)           {               if(!CheckAAPai(m_MyPAIVec[3][0],m_MyPAIVec[3][1]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==3)           {               if(!CheckAAAPai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2]))               {                   if(!CheckABCPai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2]))                   {                       return false;                   }               }           }           else if(iSize==5)           {               if(!Check5Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==6)           {               if(!Check6Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5]))               {                   return false;               }           }           else if(iSize==8)           {               if(!Check8Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==9)           {               if(!Check9Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8]))               {                   return false;               }           }           else if(iSize==11)           {               if(!Check11Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8],m_MyPAIVec[3][9],m_MyPAIVec[3][10]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==12)           {               if(!Check12Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8],m_MyPAIVec[3][9],m_MyPAIVec[3][10],m_MyPAIVec[3][11]))               {                   return false;               }           }           else if(iSize==14)           {               if(!Check14Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8],m_MyPAIVec[3][9],m_MyPAIVec[3][10],m_MyPAIVec[3][11],m_MyPAIVec[3][12],m_MyPAIVec[3][13]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else           {               return false;           }          }          //餅       iSize = m_MyPAIVec[4].size();       if(iSize>0)       {           if(iSize==2)           {               if(!CheckAAPai(m_MyPAIVec[4][0],m_MyPAIVec[4][1]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==3)           {               if(!CheckAAAPai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2]))               {                   if(!CheckABCPai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2]))                   {                       return false;                   }               }           }           else if(iSize==5)           {               if(!Check5Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==6)           {               if(!Check6Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5]))               {                   return false;               }           }           else if(iSize==8)           {               if(!Check8Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5],m_MyPAIVec[4][6],m_MyPAIVec[4][7]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==9)           {               if(!Check9Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5],m_MyPAIVec[4][6],m_MyPAIVec[4][7],m_MyPAIVec[4][8]))               {                   return false;               }           }           else if(iSize==11)           {               if(!Check11Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5],m_MyPAIVec[4][6],m_MyPAIVec[4][7],m_MyPAIVec[4][8],m_MyPAIVec[4][9],m_MyPAIVec[4][10]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else if(iSize==12)           {               if(!Check12Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5],m_MyPAIVec[4][6],m_MyPAIVec[4][7],m_MyPAIVec[4][8],m_MyPAIVec[4][9],m_MyPAIVec[4][10],m_MyPAIVec[4][11]))               {                   return false;               }           }           else if(iSize==14)           {               if(!Check14Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5],m_MyPAIVec[4][6],m_MyPAIVec[4][7],m_MyPAIVec[4][8],m_MyPAIVec[4][9],m_MyPAIVec[4][10],m_MyPAIVec[4][11],m_MyPAIVec[4][12],m_MyPAIVec[4][13]))               {                   return false;               }               else               {                   iJiangNum++ ;               }           }           else           {               return false;           }       }          if(iJiangNum==1)return true;       return false;   }   //檢測聽   bool    CMJ::CheckTING()   {       //劍牌       for(UINT j = 0 ; j < 9 ;j++ )       {           //起牌           AddPai(0,j+1);           if(CheckAllPai(MJPAI_GETPAI))           {               int iPaiIndex = GetPaiIndex(0,j+1);               DelPai(iPaiIndex);               return true;           }           else           {               int iPaiIndex = GetPaiIndex(0,j+1);               DelPai(iPaiIndex);           }       }       //風牌       for(UINT j = 0 ; j < 9 ;j++ )       {           //起牌           AddPai(1,j+1);           if(CheckAllPai(MJPAI_GETPAI))           {               int iPaiIndex = GetPaiIndex(1,j+1);               DelPai(iPaiIndex);               return true;           }           else           {               int iPaiIndex = GetPaiIndex(1,j+1);               DelPai(iPaiIndex);           }       }       for(UINT i = 2 ; i < 5 ;i++ )       {           for(UINT j = 0 ; j < 9 ;j++ )           {               //起牌               AddPai(i,j+1);               if(CheckAllPai(MJPAI_GETPAI))               {                   int iPaiIndex = GetPaiIndex(i,j+1);                   DelPai(iPaiIndex);                   return true;               }               else               {                   int iPaiIndex = GetPaiIndex(i,j+1);                   DelPai(iPaiIndex);               }           }       }       return false;   }           怎麼樣,代碼寫的還算清晰吧。喝口水,休息一下,再看一下CMJManage類的實現: [cpp]  #ifndef _CMJMANAGE_H   #define _CMJMANAGE_H   #include "CMJ.h"   //剩余牌牆信息   //擴展   struct stPAIEx   {       stPAI   m_NewPai;                       //起的新牌       int     m_PaiNum;                       //剩余牌數       bool    m_IsHZ;                         //是否黃莊   }   ;      //麻將管理器   class CMJManage   {       vector<stPAI> m_MJVec;                //麻將數據VEC       int             m_HZPaiNum;             //黃莊的牌數   public:          //構造函數       CMJManage();       //析構函數       ~CMJManage();       //初始化牌       void    InitPai(int p_HZPaiNum = 0);       //起牌       stPAIEx GetAPai();   private:       //洗牌       void    XiPai();   }   ;      #endif     對應CPP: [cpp]   #include "CMJManage.h"          //構造函數   CMJManage::CMJManage()   {       m_HZPaiNum = 0;   }   //析構函數   CMJManage::~CMJManage()   {          }      //初始化牌   void    CMJManage::InitPai(int p_HZPaiNum)   {       m_HZPaiNum = p_HZPaiNum;       m_MJVec.clear();       //中發白       for(UINT i = 1 ; i <= 3 ; i++)       {           stPAI t_Pai;           t_Pai.m_Type = 0;           t_Pai.m_Value = i;           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);       }       //東南西北       for(UINT i = 1 ; i <= 4 ; i++)       {           stPAI t_Pai;           t_Pai.m_Type = 1;           t_Pai.m_Value = i;           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);       }       //萬       for(UINT i = 1 ; i <= 9 ; i++)       {           stPAI t_Pai;           t_Pai.m_Type = 2;           t_Pai.m_Value = i;           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);       }       //條       for(UINT i = 1 ; i <= 9 ; i++)       {           stPAI t_Pai;           t_Pai.m_Type = 3;           t_Pai.m_Value = i;           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);       }       //餅       for(UINT i = 1 ; i <= 9 ; i++)       {           stPAI t_Pai;           t_Pai.m_Type = 4;           t_Pai.m_Value = i;           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);           m_MJVec.push_back(t_Pai);       }       XiPai();   }      //洗牌   void    CMJManage::XiPai()   {       srand( GetTickCount() );       random_shuffle(m_MJVec.begin(),m_MJVec.end());   }          //起牌   stPAIEx CMJManage::GetAPai()   {       //如果所有牌都起完了              stPAIEx t_Pai;       t_Pai.m_NewPai.m_Type  = m_MJVec.back().m_Type;       t_Pai.m_NewPai.m_Value = m_MJVec.back().m_Value;       t_Pai.m_PaiNum = m_MJVec.size()-1;       if(t_Pai.m_PaiNum ==m_HZPaiNum)       {           t_Pai.m_IsHZ = true;       }       else       {           t_Pai.m_IsHZ = false;       }       //扔去一個       m_MJVec.pop_back();       return t_Pai;   }           看,洗牌發牌類也搞定了,下面我們來將其在控制台上運行起來,打開控制台的main函數。 [cpp]   #include "AI\\CMJ.h"   #include "AI\\CMJManage.h"      #include <windows.h>   #include <iostream>   using namespace std;         int _tmain(int argc, _TCHAR* argv[])   {       //其它三個玩家       CMJ             t_OtherPlayer[3];       //我       CMJ             t_MyPlayer;       //洗牌器       CMJManage       t_MJManage;       //分數       int             t_Score = 0;   GameStart:          //初始化及洗牌       t_MJManage.InitPai();//初始化       t_MyPlayer.CleanUp();       for(UINT i = 0 ; i < 3; i++ )       {           t_OtherPlayer[i].CleanUp();       }       cout<<"洗牌完成"<<endl;       cout<<"起牌:========================================================"<<endl;       for(UINT i = 0 ; i < 13 ; i++)       {              stPAIEx t_Pai = t_MJManage.GetAPai();           t_MyPlayer.AddPai(t_Pai.m_NewPai.m_Type,t_Pai.m_NewPai.m_Value);              for(UINT j = 0 ; j < 3; j++ )           {               stPAIEx t_Pai2 = t_MJManage.GetAPai();               t_OtherPlayer[j].AddPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);           }       }       t_MyPlayer.Init();       for(UINT j = 0 ; j < 3; j++ )       {           t_OtherPlayer[j].Init();       }       //打牌循環       bool t_Finish   = false;       bool t_Ting     = false;       while(t_Finish == false)       {              t_MyPlayer.PrintAllPai();           cout<<endl;           cout<<"起牌:========================================================"<<endl;           stPAIEx t_Pai = t_MJManage.GetAPai();                     //刷新我方牌牆           t_MyPlayer.PrintPai(t_Pai.m_NewPai.m_Type,t_Pai.m_NewPai.m_Value);           cout<<endl;           //如果沒有聽頭           if(t_Ting == false)           {               cout<<"要還是打?Y/N";               char t_Result;               cin>>t_Result;               if(t_Result =='Y'||t_Result=='y')               {                   //起牌                   t_MyPlayer.AddPai(t_Pai.m_NewPai.m_Type,t_Pai.m_NewPai.m_Value);                   //起牌後胡牌判斷                   t_Finish = t_MyPlayer.CheckAllPai(MJPAI_GETPAI);                   if(t_Finish)                   {                       printf("胡啦!!!:%s-%d",t_MyPlayer.GetInfo()->m_GoodName,t_MyPlayer.GetInfo()->m_GoodValue);                       ::_sleep(1000);                   }                   else                   {                       if(t_Pai.m_NewPai.m_Type == -1)//如果起牌數已達到上限                       {                           cout<<endl;                           cout<<"黃莊了!!!!!!!!!!!!!"<<endl;                           break;                       }                          t_MyPlayer.PrintAllPai();                       cout<<endl;   OUTPai:                       cout<<"請打牌(輸入牌序號)";                       int PaiIndex;                       cin>>PaiIndex;                       if(t_MyPlayer.DelPai(PaiIndex)==false)                       {                           cout<<"沒有此牌"<<endl;                           goto OUTPai;                       }                       //==============================牌面刷新================================================                       cout<<"牌面刷新============================"<<endl;                       t_MyPlayer.PrintAllPai();                       cout<<endl;                       //==============================================================================                          //======================包聽========================================================                       if(t_MyPlayer.CheckAllPai(MJPAI_PUTPAI))                       {                              char t_BTing;                           cout<<"要包聽嗎?:(Y/N)";                           cin>>t_BTing;                           if(t_BTing=='y'||t_BTing=='Y')                           {                               t_Ting = true;                           }                       }                       //==============================================================================                      }               }               else               {                       //======================包聽========================================================                       if(t_MyPlayer.CheckAllPai(MJPAI_PUTPAI))                       {                              char t_BTing;                           cout<<"要包聽嗎?:(Y/N)";                           cin>>t_BTing;                           if(t_BTing=='y'||t_BTing=='Y')                           {                               t_Ting = true;                           }                       }                       //==============================================================================               }           }           else           {                                      t_MyPlayer.AddPai(t_Pai.m_NewPai.m_Type,t_Pai.m_NewPai.m_Value);                   //起牌                   int iPaiIndex = t_MyPlayer.GetPaiIndex(t_Pai.m_NewPai.m_Type,t_Pai.m_NewPai.m_Value);                   if(iPaiIndex>=0)                   {                       //起牌後胡牌判斷                       t_Finish = t_MyPlayer.CheckAllPai(MJPAI_GETPAI);                       if(t_Finish)                       {                           cout<<endl;                           printf("胡啦!!!:%s-合計%d番",t_MyPlayer.GetInfo()->m_GoodName,t_MyPlayer.GetInfo()->m_GoodValue);                           t_Score += t_MyPlayer.GetInfo()->m_GoodValue;                           ::_sleep(1000);                           break;                       }                       else                       {                           t_MyPlayer.DelPai(iPaiIndex);                           cout<<"打牌";                           t_MyPlayer.PrintPai(t_Pai.m_NewPai.m_Type,t_Pai.m_NewPai.m_Value);                           cout<<endl;                           ::_sleep(1000);                       }                   }                   else                   {                       cout<<"程序出錯!"<<endl;                   }              }           cout<<endl;           //其它玩家起牌出牌           for(UINT j = 0 ; j < 3; j++ )           {               stPAIEx t_Pai2 = t_MJManage.GetAPai();               if(j==0)               {                   cout<<"南家起牌出牌:";                   t_MyPlayer.PrintPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);                   cout<<endl;                   ::_sleep(1000);               }               if(j==1)               {                   cout<<"西家起牌出牌:";                   t_MyPlayer.PrintPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);                   cout<<endl;                   ::_sleep(1000);               }               if(j==2)               {                   cout<<"北家起牌出牌:";                   t_MyPlayer.PrintPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);                   cout<<endl;                   ::_sleep(1000);               }                              char t_Result;               if(t_Ting == false)               {                   if(t_Pai2.m_IsHZ)//如果起牌數已達到上限                   {                       cout<<endl;                       cout<<"黃莊了!!!!!!!!!!!!!"<<endl;                       t_Finish = true;                       break;                   }                      bool t_Check = false;                   //檢查吃牌                   if(t_MyPlayer.CheckChiPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value))                   {                       if(t_Check==false)                       {                           cout<<"請選擇:";                       }                       cout<<"(吃)";                       t_Check = true;                   }                   //檢查碰牌                   if(t_MyPlayer.CheckPengPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value))                   {                       if(t_Check==false)                       {                           cout<<"請選擇:";                       }                       cout<<"(碰)";                       t_Check = true;                   }                   //檢查槓牌                   if(t_MyPlayer.CheckGangPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value))                   {                       if(t_Check==false)                       {                           cout<<"請選擇:";                       }                       cout<<"(槓)";                       t_Check = true;                   }                   //起牌                   t_MyPlayer.AddPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);                   //起牌後胡牌判斷                   if(t_MyPlayer.CheckAllPai(MJPAI_GETPAI))                   {                       if(t_Check==false)                       {                           cout<<"請選擇:";                       }                       cout<<"(胡)";                       t_Check = true;                   }                      int iPaiIndex = t_MyPlayer.GetPaiIndex(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);                   t_MyPlayer.DelPai(iPaiIndex);                   //如果查到                   if(t_Check)                   {                       cout<<endl;                       cin>>t_Result;                   }                   else                   {                       //返回循環                       continue;                   }               }               else               {                   t_Result = '4';               }               //吃牌               if(t_Result =='1')               {                   t_MyPlayer.PrintChiChosePai();                      int index = 0;                   //如果吃牌組合大於                   if(t_MyPlayer.GetChiChoseNum()>1)                   {                       cout<<"請輸入組合號:"<<endl;                       cin>>index;                   }                   t_MyPlayer.DoChiPai(index,t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);                      //==============================================================================                   cout<<"牌面刷新============================"<<endl;                   t_MyPlayer.PrintAllPai();                   cout<<endl;                   //==============================================================================      OUTPai2:                   cout<<"請打牌(輸入牌序號)";                   int PaiIndex;                   cin>>PaiIndex;                   if(t_MyPlayer.DelPai(PaiIndex)==false)                   {                       cout<<"沒有此牌"<<endl;                       goto OUTPai2;                   }                      //=================================牌面刷新=============================================                   cout<<"牌面刷新============================"<<endl;                   t_MyPlayer.PrintAllPai();                   cout<<endl;                   //==============================================================================                   //======================包聽========================================================                   if(t_MyPlayer.CheckAllPai(MJPAI_PUTPAI))                   {                          char t_BTing;                       cout<<"要包聽嗎?:(Y/N)";                       cin>>t_BTing;                       if(t_BTing=='y'||t_BTing=='Y')                       {                           t_Ting = true;                       }                   }                   //==============================================================================                   //該我下家                   j = -1;                          }               else if(t_Result =='2')//碰牌               {                      t_MyPlayer.PrintPengChosePai();                   t_MyPlayer.DoPengPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);                   //==============================================================================                   cout<<"牌面刷新============================"<<endl;                   t_MyPlayer.PrintAllPai();                   cout<<endl;                   //==============================================================================   OUTPai3:                   cout<<"請打牌(輸入牌序號)";                   int PaiIndex;                   cin>>PaiIndex;                   if(t_MyPlayer.DelPai(PaiIndex)==false)                   {                       cout<<"沒有此牌"<<endl;                       goto OUTPai3;                   }                   //==========================牌面刷新====================================================                   cout<<"牌面刷新============================"<<endl;                   t_MyPlayer.PrintAllPai();                   cout<<endl;                   //==============================================================================                   //======================包聽========================================================                   if(t_MyPlayer.CheckAllPai(MJPAI_PUTPAI))                   {                          char t_BTing;                       cout<<"要包聽嗎?:(Y/N)";                       cin>>t_BTing;                       if(t_BTing=='y'||t_BTing=='Y')                       {                           t_Ting = true;                       }                   }                   //==============================================================================                   j = -1;                      }               else if(t_Result =='3')//槓牌               {                      t_MyPlayer.PrintGangChosePai();                   t_MyPlayer.DoGangPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);                   cout<<"起槓底牌"<<endl;                   t_MyPlayer.AddPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);                   //==============================================================================                   cout<<"牌面刷新============================"<<endl;                   t_MyPlayer.PrintAllPai();                   cout<<endl;                   //==============================================================================                   stPAIEx t_Pai2 = t_MJManage.GetAPai();                                      //起牌後胡牌判斷                   t_Finish = t_MyPlayer.CheckAllPai(MJPAI_GETPAI);                   if(t_Finish)                   {                       cout<<"槓底花嗎?(Y/N)"<<endl;                       char t_Result;                       cin>>t_Result;                       if(t_Result =='Y'||t_Result=='y')                       {                           cout<<endl;                           printf("胡啦!!!:%s-%d",t_MyPlayer.GetInfo()->m_GoodName,t_MyPlayer.GetInfo()->m_GoodValue);                           t_Score += t_MyPlayer.GetInfo()->m_GoodValue;                           ::_sleep(1000);                           break;                       }                   }                      if(t_Pai2.m_IsHZ)//如果起牌數已達到上限                   {                       cout<<"黃莊了!!!!!!!!!!!!!"<<endl;                       t_Finish = true;                       break;                   }      OUTPai4:                   cout<<"請打牌(輸入牌序號)";                   int PaiIndex;                   cin>>PaiIndex;                   if(t_MyPlayer.DelPai(PaiIndex)==false)                   {                       cout<<"沒有此牌"<<endl;                       goto OUTPai4;                   }                   //===========================牌面刷新===================================================                   cout<<"牌面刷新============================"<<endl;                   t_MyPlayer.PrintAllPai();                   cout<<endl;                   //==============================================================================                   //======================包聽========================================================                   if(t_MyPlayer.CheckAllPai(MJPAI_PUTPAI))                   {                          char t_BTing;                       cout<<"要包聽嗎?:(Y/N)";                       cin>>t_BTing;                       if(t_BTing=='y'||t_BTing=='Y')                       {                           t_Ting = true;                       }                   }                   //==============================================================================                   //該我下家                   j = -1;                  }               else if(t_Result =='4')//胡牌               {                   //起牌                   t_MyPlayer.AddPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);                   //起牌後胡牌判斷                   t_Finish = t_MyPlayer.CheckAllPai(MJPAI_GETPAI);                   if(t_Finish)                   {                       printf("胡啦!!!:%s-合計%d番",t_MyPlayer.GetInfo()->m_GoodName,t_MyPlayer.GetInfo()->m_GoodValue);                       t_Score += t_MyPlayer.GetInfo()->m_GoodValue;                       ::_sleep(1000);                       break;                   }                   else                   {                       if(t_Pai2.m_IsHZ)//如果起牌數已達到上限                       {                           cout<<"黃莊了!!!!!!!!!!!!!"<<endl;                           t_Finish = true;                           break;                       }                       //起牌                       int iPaiIndex = t_MyPlayer.GetPaiIndex(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);                       cout<<endl;                       t_MyPlayer.DelPai(iPaiIndex);                   }               }                          }             }       cout<<"我的分數:"<<t_Score<<endl;       ::_sleep(3000);        goto GameStart;//重新開始一局          return 0;   }      

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved