亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

麻將游戲算法深入解析及實現代碼

2020-01-26 14:13:59
字體:
來源:轉載
供稿:網友

麻將游戲算法深入解析及實現代碼

 這兩天為了工具箱的完善,整理了這些年引擎開發的一些資料,無意中發現06年寫的一個麻將算法,編譯運行了一下,還是有點意思的,拿出來整理一下分享給大家。

       麻將是一種大家最喜愛的娛樂活動之一,相信所有人都有接觸過。我寫的這版算法,是可以吃,碰,杠,還有把牌摸完沒有人胡時的皇莊和包聽。是用控制臺方式來表現的,什么?控制臺?

       對,因為是算法的設計,所以用控制臺來表現當然最簡單了。

      當然,在交互時要用文字輸入會有少許不便,不過這種形式的游戲可是圖形游戲的鼻祖哦~

     好,廢話不多說了,來說一下設計思路:

     對于麻將的一個玩家,都有一個牌墻的管理,這里封裝了一副牌墻的各種算法,這個類我命名為CMJ。

     另外還有一個洗牌類,負責洗牌和發牌。這個類為CMJManage。

     我們先來看一下CMJ類。

CMJ.h:

#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 :

#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類的實現:

#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:

#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函數。

#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; } 

     OK,麻將就這樣實現了,你可以將其任意修改一下變形成你喜歡的麻將游戲,我很開心這個代碼能再次煥發青春,在此謝謝你。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人黄色在线观看| 成人免费高清完整版在线观看| 亚洲男人天堂网站| 国产97在线视频| 久久久999成人| 久久久久亚洲精品成人网小说| 国产一区在线播放| 中文字幕综合在线| 欧美成人免费在线视频| 亚洲成人激情在线观看| 日韩欧美一区二区在线| 亚洲天堂视频在线观看| 久热精品视频在线免费观看| 5566日本婷婷色中文字幕97| 欧美日韩一区二区三区在线免费观看| 亚洲成人网在线| 欧美性猛交xxxx乱大交极品| 97超视频免费观看| 777午夜精品福利在线观看| 欧美激情精品久久久久久变态| 欧美激情一区二区三区在线视频观看| 91av在线影院| 韩国国内大量揄拍精品视频| 国产精品91在线| 国产精品男女猛烈高潮激情| 午夜精品一区二区三区在线播放| 成人性生交大片免费观看嘿嘿视频| 国产欧美va欧美va香蕉在线| 亚洲美女性视频| 久久精品国产v日韩v亚洲| 夜夜躁日日躁狠狠久久88av| 久久人人97超碰精品888| 国产不卡在线观看| 成人午夜激情免费视频| 日韩av三级在线观看| 亚洲最新视频在线| 成人福利网站在线观看11| 成人黄色av网| 久久久人成影片一区二区三区| 亚洲国产精彩中文乱码av在线播放| 国产精品91在线观看| 久久视频这里只有精品| 亚洲成人久久久久| 久久香蕉频线观| 亚洲视频视频在线| 国产精品久久中文| 日韩av一区在线| 久久精品国产免费观看| 久久伊人91精品综合网站| 视频在线一区二区| 韩曰欧美视频免费观看| 在线视频国产日韩| 日韩av影视在线| 久热精品视频在线免费观看| 欧美日韩成人精品| 97香蕉超级碰碰久久免费软件| 久久影视电视剧免费网站| 欧美精品免费在线观看| 欧美日韩国产综合新一区| 亚洲无限av看| 成人情趣片在线观看免费| 欧洲午夜精品久久久| 国产精品av在线播放| 国产精品久久久久久五月尺| 波霸ol色综合久久| 国产精品揄拍一区二区| 日本亚洲欧美成人| 国产成人av在线播放| 成人激情视频网| 日韩欧亚中文在线| 日韩成人黄色av| 韩曰欧美视频免费观看| 91精品国产综合久久久久久久久| 亚洲欧美色婷婷| 91国产精品视频在线| 久久夜色撩人精品| 亚洲色图第一页| 国产一区二区丝袜高跟鞋图片| 久久久国产精彩视频美女艺术照福利| 亚洲国产又黄又爽女人高潮的| 国产视频在线观看一区二区| 亚洲黄色片网站| 亚洲变态欧美另类捆绑| 97精品久久久中文字幕免费| 色与欲影视天天看综合网| 国产精品人成电影在线观看| 亚洲第一精品夜夜躁人人爽| 国产成人精品视频在线| 久久的精品视频| 国产综合香蕉五月婷在线| 亚洲午夜小视频| 91理论片午午论夜理片久久| 日韩黄色av网站| 7m精品福利视频导航| 欧美精品一区二区三区国产精品| 97色在线观看免费视频| 久操成人在线视频| 96sao精品视频在线观看| 亚洲高清福利视频| 国产一区二区三区中文| 久久久久久久久久久亚洲| 97涩涩爰在线观看亚洲| 欧美一级视频在线观看| 久久久久中文字幕2018| 一区二区三欧美| 日韩精品在线免费观看视频| 欧美电影在线观看网站| 色诱女教师一区二区三区| 隔壁老王国产在线精品| 伊人成人开心激情综合网| 国产精品久久久久久久天堂| 亚洲专区中文字幕| 亚洲女人天堂视频| 91精品国产综合久久香蕉的用户体验| 国产成人高清激情视频在线观看| 国产视频精品xxxx| 7777精品视频| 日韩美女av在线免费观看| 日韩av电影手机在线观看| 富二代精品短视频| 欧美丰满少妇xxxx| 欧美有码在线视频| 中文字幕成人精品久久不卡| 日韩av在线天堂网| 亚洲v日韩v综合v精品v| 97不卡在线视频| 91国偷自产一区二区三区的观看方式| 日韩精品福利网站| 国产精品免费电影| 亚洲国产91色在线| 久久国产精品视频| 国产有码一区二区| 91精品在线观| 欧美特级www| 69久久夜色精品国产7777| 91国产中文字幕| 秋霞av国产精品一区| 国产精品视频网| 日韩美女视频免费在线观看| 久久激情五月丁香伊人| 黄色精品一区二区| 欧美巨乳美女视频| 国产精品第10页| 中文字幕欧美日韩| 日韩av在线高清| 日韩免费精品视频| 欧美巨大黑人极品精男| 日韩精品在线观看视频| 91av视频在线观看| 97在线观看免费高清| 久久九九精品99国产精品| 亚洲欧美中文字幕在线一区| 欧美孕妇毛茸茸xxxx| 亚洲国产精品一区二区久| 欧美xxxx做受欧美| 日韩中文在线中文网三级| 91国偷自产一区二区三区的观看方式| 日韩高清中文字幕| 亚洲一品av免费观看| 亚洲电影免费在线观看| 日韩亚洲精品电影| 97avcom| 亚洲成av人片在线观看香蕉| 国产成人鲁鲁免费视频a|