中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用編程語言開發麻將游戲算法的示例分析

發布時間:2021-08-04 09:26:00 來源:億速云 閱讀:568 作者:小新 欄目:編程語言

這篇文章主要介紹了如何使用編程語言開發麻將游戲算法的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

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

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

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

如何使用編程語言開發麻將游戲算法的示例分析

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

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

     對于麻將的一個玩家,都有一個牌墻的管理,這里封裝了一副牌墻的各種算法,這個類我命名為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; 
}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何使用編程語言開發麻將游戲算法的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

日照市| 宜章县| 赤水市| 永安市| 内江市| 喀什市| 万盛区| 大邑县| 通江县| 岑溪市| 鹤山市| 惠来县| 竹北市| 铜梁县| 马鞍山市| 余姚市| 太和县| 济宁市| 蓬溪县| 信宜市| 长岛县| 平凉市| 峡江县| 洱源县| 凤凰县| 屯门区| 崇信县| 商河县| 苍山县| 秀山| 无锡市| 义马市| 波密县| 兴和县| 乌拉特后旗| 嘉善县| 长宁区| 尖扎县| 峨眉山市| 芒康县| 胶南市|