麻将游戏算法深入解析及实现代码

这两天为了工具箱的完善,整理了这些年引擎开发的一些资料,无意中发现06年写的一个麻将算法,编译运行了一下,还是有点意思的,拿出来整理一下分享给大家。

麻将是一种大家最喜爱的娱乐活动之一,相信所有人都有接触过。我写的这版算法,是可以吃,碰,杠,还有把牌摸完没有人胡时的皇庄和包听。是用控制台方式来表现的,什么?控制台?

对,因为是算法的设计,所以用控制台来表现当然最简单了。

当然,在交互时要用文字输入会有少许不便,不过这种形式的游戏可是图形游戏的鼻祖哦~

好,废话不多说了,来说一下设计思路:

对于麻将的一个玩家,都有一个牌墙的管理,这里封装了一副牌墙的各种算法,这个类我命名为CMJ。

另外还有一个洗牌类,负责洗牌和发牌。这个类为CMJManage。

我们先来看一下CMJ类。

CMJ.h:

#ifndef _CMJ_H

#define _CMJ_H

//============================================

//Author:Honghaier

//Date:2006-12-20

//QQ:285421210

//============================================

#include

#include

#include

#include

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<

}

cout<

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<

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<

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<

icount++;

}

}

cout<

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<

icount++;

}

}

cout<

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<

icount++;

}

}

cout<

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<

}

//条

if(p_Type==3)

{

cout<

}

//饼

if(p_Type==4)

{

cout<

}

}

//吃牌

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

vector::iterator Iter;

for(Iter = m_TempChiPAIVec.begin(); Iter != m_TempChiPAIVec.end();Iter++)

{

//万

if((*Iter).m_Type==2)

{

cout<

cout<

cout<

}

//条

if((*Iter).m_Type==3)

{

cout<

cout<

cout<

}

//饼

if((*Iter).m_Type==4)

{

cout<

cout<

cout<

}

}

cout<

}

//对可碰的组合进行输出

void CMJ::PrintPengChosePai()

{

cout<

vector::iterator Iter;

for(Iter = m_TempPengPAIVec.begin(); Iter != m_TempPengPAIVec.end();Iter++)

{

//万

if((*Iter).m_Type==2)

{

cout<

cout<

cout<

}

//条

if((*Iter).m_Type==3)

{

cout<

cout<

cout<

}

//饼

if((*Iter).m_Type==4)

{

cout<

cout<

cout<

}

}

cout<

}

//对可杠的组合进行输出

void CMJ::PrintGangChosePai()

{

cout<

vector::iterator Iter;

for(Iter = m_TempGangPAIVec.begin(); Iter != m_TempGangPAIVec.end();Iter++)

{

//万

if((*Iter).m_Type==2)

{

cout<

cout<

cout<

cout<

}

//条

if((*Iter).m_Type==3)

{

cout<

cout<

cout<

cout<

}

//饼

if((*Iter).m_Type==4)

{

cout<

cout<

cout<

cout<

}

}

cout<

}

//取得吃牌组合数

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

#include

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<

cout<

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<

cout<

stPAIEx t_Pai = t_MJManage.GetAPai();

//刷新我方牌墙

t_MyPlayer.PrintPai(t_Pai.m_NewPai.m_Type,t_Pai.m_NewPai.m_Value);

cout<

//如果没有听头

if(t_Ting == false)

{

cout<

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<

cout<

break;

}

t_MyPlayer.PrintAllPai();

cout<

OUTPai:

cout<

int PaiIndex;

cin>>PaiIndex;

if(t_MyPlayer.DelPai(PaiIndex)==false)

{

cout<

goto OUTPai;

}

//==============================牌面刷新================================================

cout<

t_MyPlayer.PrintAllPai();

cout<

//==============================================================================

//======================包听========================================================

if(t_MyPlayer.CheckAllPai(MJPAI_PUTPAI))

{

char t_BTing;

cout<

cin>>t_BTing;

if(t_BTing=='y'||t_BTing=='Y')

{

t_Ting = true;

}

}

//==============================================================================

}

}

else

{

//======================包听========================================================

if(t_MyPlayer.CheckAllPai(MJPAI_PUTPAI))

{

char t_BTing;

cout<

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<

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<

::_sleep(1000);

}

}

else

{

cout<

}

}

cout<

//其它玩家起牌出牌

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<

::_sleep(1000);

}

if(j==1)

{

cout<

t_MyPlayer.PrintPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);

cout<

::_sleep(1000);

}

if(j==2)

{

cout<

t_MyPlayer.PrintPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);

cout<

::_sleep(1000);

}

char t_Result;

if(t_Ting == false)

{

if(t_Pai2.m_IsHZ)//如果起牌数已达到上限

{

cout<

cout<

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<

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<

cin>>index;

}

t_MyPlayer.DoChiPai(index,t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);

//==============================================================================

cout<

t_MyPlayer.PrintAllPai();

cout<

//==============================================================================

OUTPai2:

cout<

int PaiIndex;

cin>>PaiIndex;

if(t_MyPlayer.DelPai(PaiIndex)==false)

{

cout<

goto OUTPai2;

}

//=================================牌面刷新=============================================

cout<

t_MyPlayer.PrintAllPai();

cout<

//==============================================================================

//======================包听========================================================

if(t_MyPlayer.CheckAllPai(MJPAI_PUTPAI))

{

char t_BTing;

cout<

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<

t_MyPlayer.PrintAllPai();

cout<

//==============================================================================

OUTPai3:

cout<

int PaiIndex;

cin>>PaiIndex;

if(t_MyPlayer.DelPai(PaiIndex)==false)

{

cout<

goto OUTPai3;

}

//==========================牌面刷新====================================================

cout<

t_MyPlayer.PrintAllPai();

cout<

//==============================================================================

//======================包听========================================================

if(t_MyPlayer.CheckAllPai(MJPAI_PUTPAI))

{

char t_BTing;

cout<

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<

t_MyPlayer.AddPai(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);

//==============================================================================

cout<

t_MyPlayer.PrintAllPai();

cout<

//==============================================================================

stPAIEx t_Pai2 = t_MJManage.GetAPai();

//起牌后胡牌判断

t_Finish = t_MyPlayer.CheckAllPai(MJPAI_GETPAI);

if(t_Finish)

{

cout<

char t_Result;

cin>>t_Result;

if(t_Result =='Y'||t_Result=='y')

{

cout<

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<

t_Finish = true;

break;

}

OUTPai4:

cout<

int PaiIndex;

cin>>PaiIndex;

if(t_MyPlayer.DelPai(PaiIndex)==false)

{

cout<

goto OUTPai4;

}

//===========================牌面刷新===================================================

cout<

t_MyPlayer.PrintAllPai();

cout<

//==============================================================================

//======================包听========================================================

if(t_MyPlayer.CheckAllPai(MJPAI_PUTPAI))

{

char t_BTing;

cout<

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<

t_Finish = true;

break;

}

//起牌

int iPaiIndex = t_MyPlayer.GetPaiIndex(t_Pai2.m_NewPai.m_Type,t_Pai2.m_NewPai.m_Value);

cout<

t_MyPlayer.DelPai(iPaiIndex);

}

}

}

}

cout<

::_sleep(3000);

goto GameStart;//重新开始一局

return 0;

}

OK,麻将就这样实现了,你可以将其任意修改一下变形成你喜欢的麻将游戏,我很开心这个代码能再次焕发青春,在此谢谢你。

java语言麻将游戏代码_麻将游戏算法深入解析及实现代码相关推荐

  1. Java语言strcmp函数用法_蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法)

    蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法) 首先这不是一个多难的题,但是网上的我没怎么找到有Java的代码,基本全都是c语言的,小编是个小白,如果有不对的地方请联系小编 问题描述 ...

  2. 跳一跳j算法ava代码_麻将游戏算法深入解析及实现代码

    麻将游戏算法深入解析及实现代码 这两天为了工具箱的完善,整理了这些年引擎开发的一些资料,无意中发现06年写的一个麻将算法,编译运行了一下,还是有点意思的,拿出来整理一下分享给大家. 麻将是一种大家最喜 ...

  3. 第九届蓝桥杯省赛JAVA语言 C组题解_题7 缩位求和

    JAVA语言 C组题解_题7 缩位求和 题目 解题思路 题目 标题:缩位求和 在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确. 比如:248 * 15 = 3720 把乘数和被乘 ...

  4. c语言 倒计时不清屏_打字游戏超细讲解(C语言基础小游戏)

    首先我们会发现我们网上看到的打字游戏都是上来就敲代码,小白看的一脸懵,所以鑫哥在这给大家送上一份超级详细的打字游戏编写流程及对应的结果展示,希望可以帮到小白进行入门学习. 话不多说,我们先看一下什么叫 ...

  5. 记事本贪吃蛇游戏代码_厉害了,程序员28行代码写贪吃蛇游戏,附源码!

    对于贪吃蛇游戏,大家基本上都玩过,但是作为一个程序员,大家是否想过要自己去写一个贪吃蛇,毕竟玩别人写的游戏和自己写的游戏是两种截然不同的感受,而且也可以通过制作来提升自己的技术! 其实贪吃蛇的逻辑并不 ...

  6. c语言easyx输出文字_做游戏,学编程(C语言) 6 数组之空战游戏

    利用数组,我们可以在空战游戏中实现多台敌机.发射闪弹等效果.大家可以用之前教程的思路,尝试分步骤实现:飞机的显示.单个敌机.多个敌机.发射常规子弹.发射闪弹,以下是完整的代码. #include &l ...

  7. 生命游戏代码_生命游戏 the Game of Life

    引言 群居性昆虫是一个生命,鱼群.鸟群是一个生命,社会.城市是一个有机体,人类的语言是活的,人类的集体行为也是活的.这些复杂系统是如何设计出来的?世界上最著名的游戏之一,Game of Life生命游 ...

  8. android骰子游戏代码_真神器!不用手写一行代码就能做网站~

    点击上方"Python编程时光",选择"加为星标"第一时间关注Python技术干货! 制作网站用什么,Dreamweaver 还是 Fireworks? 现在, ...

  9. Java 丢手绢游戏 求和_大班游戏活动_丢手绢

    本育儿文章是育儿天堂最新发布的<大班游戏活动_丢手绢>的详细页面,觉得有用就收藏了,这里给大家转摘到育儿天堂,看完如果觉得有用请记得收藏. 大班游戏运动:丢手绢 滨州市滨城区杨柳雪镇教诲尝 ...

最新文章

  1. Exchange 2013sp1邮件系统部署-(七)
  2. 每天学一点flash (20) flash cs3.0 外部加载图片
  3. python代码用c语言封装_树莓派开发ADC芯片CS1237(C语言和python库开发)
  4. cad中拖动文字时卡顿_技巧CAD制图的一百多个技巧,都学会你就逆天了!(下)...
  5. asp.net跨页面传值收集
  6. 大数据对社交媒体的影响_数据如何影响媒体,广告和娱乐职业
  7. 阿里云服务器一分价钱一分货,切记!
  8. java poi 页码,apache poi页码
  9. css元素穿透。 pointer-events: none;
  10. 杭电 -- 2553 N皇后问题
  11. C语言 --- sizeof() 7种使用详解
  12. c语言用while循环输出九九乘法表,用C语言的while循环,打印九九乘法表
  13. 纵向联邦线性模型在线推理过程中成员推断攻击的隐私保护研究
  14. 如何从YouTube历史记录中暂停,清除和删除视频
  15. 摄影-曝光口诀(阳光16法则)
  16. Springboot科学养宠 omap1计算机毕业设计-课程设计-期末作业-毕设程序代做
  17. window10 卸载输入法
  18. 【泛函分析】Riemann-Stieltjes 积分
  19. USB设备开发---- usb描述符概述
  20. Unity和安卓(二):接入 google 广告

热门文章

  1. 《炬丰科技-半导体工艺》超细金属颗粒在硅片表面的行为
  2. 基于网络媒介的交互设计研究
  3. 怎样使自己有积极的心态
  4. uniapp开发微信小程序APPID的获取,微信开发者工具游客模式下,调用 wx.operateWXData 是受限的
  5. 第8章 安全模型、设计和能力的原则
  6. Python tkinter canvas方法的Bitmap、stipple参数和组件Bitmap属性的使用以及xbm文件
  7. 电气控制与PLC应用(第一章)
  8. 从现在开始,我要……
  9. 【Echarts图例点击事件】自定义Echarts图例legend点击事件(已解决)
  10. Android问题笔记 - AutoSize的Toast失效