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

2023-05-16

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

这两天为了工具箱的完善,整理了这些年引擎开发的一些资料,无意中发现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,麻将就这样实现了,你可以将其任意修改一下变形成你喜欢的麻将游戏,我很开心这个代码能再次焕发青春,在此谢谢你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跳一跳j算法ava代码_麻将游戏算法深入解析及实现代码 的相关文章

  • k8s通过service访问pod(五)--技术流ken

    service 每个 Pod 都有自己的 IP 地址 当 controller 用新 Pod 替代发生故障的 Pod 时 xff0c 新 Pod 会分配到新的 IP 地址 这样就产生了一个问题 xff1a 如果一组 Pod 对外提供服务 x
  • 计算机图形学在GIS中的应用,GIS在交通中的应用与发展-

    xff27 xff29 xff33 在交通中的应用与发展 摘 要 xff1a 地理信息技术的日臻成熟为 xff27 xff29 xff33 在交通领域内的广泛应用创造了一定基础 本文总结了 xff27 xff29 xff33 技术的特点 x
  • 查询MYSQl数据表中的最后一条记录

    mysql select from table order by id DESC limit 1 oracle select from emp where id in select max id from emp 实例 xff1a mysq
  • Windows 10 替换 cmd 的命令行工具

    最近找 Windows 10 的命令行工具 xff0c 发现了 Windows 自带的 PowerShell xff0c 确实功能强大 推荐 查找方法 xff1a 搜索 xff0c PowserShell 打开就能用 https www z
  • 压控恒流源电路

    http bbs 21ic com forum php mod 61 viewthread amp tid 61 1634988 amp highlight 61 4 20ma 最简单简陋的电流输出电路 xff0c 是用 三级管 43 放大
  • OFFBOARD

    Pixhawk的offboard模式 xff0c 是指我们不用遥控器操控飞机 xff0c 也不用地面站给它设定plan 直接用飞机上的板载计算机来与Pixhawk进行通信 xff0c 控制飞机运动 准备工作 xff1a 首先要有一个板载计算
  • 思考: 从曲线中提取出近似直线的一段

    这个问题也是别人问我的 我思考了一些时间 希望抛砖引玉 得到更好的方法 问题是这样的 有一些离散的点 在坐标系中把它们拟合成一条曲线 其中有一段看上去很像是直线 现在要求出这段 34 直线 34 的起始坐标和结束坐标 并把这条线的方程求出来
  • 课程第一天内容《基础交换 一 》

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 项目流程介绍 xff1a 前期 中期 后期 xff1b 项目任务分解 xff1a 工具 甘特图 xff1b 任务 时间 负责人 xff1b 网络设备介绍 xff1a 交换机
  • hewlett-packard 设置 HP启动设置

    开机按 F8进入高级选项安全模式 F9进入启动顺序选择项 F10进入双系统选择项 ESC进入启动选项键选择界面 Delete键进入BIOS please select boot device 请选择启动装置 UEFI boot source
  • 收藏了很久的:5款电影网站!高清大片任意看!就没有找不到资源!

    一放假就剧荒 xff1f 没有时间去电影院看 xff1f 那这5款电影网站你很需要 xff01 Top1 xff1a 中国高清网 各种大片任意看 xff01 最新上映还是好莱坞大片 xff0c 想看什么就看什么 xff01 还怕剧荒 xff
  • 如何查看MySQL数据库的版本

    如何查看MySQL数据库的版本 一 总结 一句话总结 xff1a SQL语句 xff1a select version 命令行 xff1a mysql V 或 mysql version 二 三种方法查看MySQL数据库的版本 转自或参考
  • mysql数据库,变长字符串、定长字符串区别

    变长字符串 varchar varchar 255 所占资源空间是你存储内容的长度 定长字符串 char char 8 不管你存储内容的长度是多少 xff0c 它所占空间就是8 xff0c 如果存储内容长度大于8 xff0c 则会被截取 所
  • How do I install Active Directory on my Windows Server 2003 server?

    How do I install Active Directory on my Windows Server 2003 server by Daniel Petri January 8 2009 Printer Friendly Versi
  • 301. Remove Invalid Parentheses

    Remove the minimum number of invalid parentheses in order to make the input string valid Return all possible results Not
  • matlab练习程序(图像水平/竖直移动)

    cl delta x 61 67 要求为整数 xff0c 水平移动的偏移量 xff0c 正为向右 xff0c 负为向左 delta y 61 89 要求为整数 xff0c 竖直移动的偏移量 xff0c 正为向下 xff0c 负为向上 img
  • 第二章 M文件程序设计(matlab)

    Contents 第二章 M文件程序设计M文件一 程序控制结构1 顺序结构1 数据的输入input2 数据的输出disp 输出字符串或者矩阵3 程序的暂停 pause Ctrl 43 C 延迟的秒数 2 选择结构1 IF语句2 switch
  • 无人机二次开发硬件清单

    四旋翼系统 3D Robotics IRIS 43 飞控 功能组件 eBumper4 声呐避障模块 组合功能 DJI Matrice100 43 Guidance 43 Onboard SDK

随机推荐

  • npm install报错解决方法ls-remote -h -t git://github.com/adobe-webplatform/eve.git

    npm install 时报错 xff0c 使用ssh 和 https 重新克隆代码都不行 xff0c 以下是解决办法 npm ERR usr local bin git ls remote h t git github com adobe
  • reStructuredText文件语法简单学习

    reStructuredText 是一种扩展名为 rst的纯文本文件 xff0c 通过特定的解释器 xff0c 能够将文本中的内容输出为特定的格式 1 章节标题 章节头部由下线 xff08 也可有上线 xff09 和包含标点的标题组合创建
  • [Hadoop 周边] 浅谈大数据(hadoop)和移动开发(Android、IOS)开发前景【转】

    原文链接 xff1a http www d1net com bigdata news 345893 html 先简单的做个自我介绍 xff0c 我是云6期的 xff0c 黑马相比其它培训机构的好偶就不在这里说 xff0c 想比大家都比我清楚
  • 无代理防毒:虚拟化与安全的深度融合

    当今 xff0c 用户对虚拟化和云计算平台的需求正在呈现爆发趋势 然而 xff0c 虚拟化技术其实是一把双刃剑 xff0c 它具有更高效率地利用计算 存储资源等优势 xff0c 但这些优势都依赖于虚拟化系统资源高度集中的特性 xff0c 但
  • 计算机专业找工作注意什么

    为什么80 的码农都做不了架构师 xff1f gt gt gt http www java sh Sharing qzjq 1722 html 几年前市场对计算机专业人才的需求非常大 xff0c 计算机专业红得发紫 xff0c 毕业生是 皇
  • 解析Linux C/C++开发的难度到底在哪

    解析Linux C C 43 43 开发的难度到底在哪 经常被问到的问题 如何学习C 43 43 如何学习Linux 如何开始 xff1f 其实这个问题对于不同的人答案往往不尽相同 xff0c 每个人所处的环境就不同 一个普遍的现象是有一些
  • 在局域网内实现https安全访问

    在局域网内实现https安全访问 准备原料 服务器 resin xff08 当然也可以是tomcat xff0c 这里以resin为例 xff09 安装jdk 域名 xff08 随便写一个就行 xff0c 因为是内网使用 xff0c 不会被
  • GWAS | 全基因组关联分析 | PLINK | 实战 | 统计遗传学

    参考 xff1a PLINK File format reference vcftools plink的主要功能 xff1a 数据处理 xff0c 质量控制的基本统计 xff0c 群体分层分析 xff0c 单位点的基本关联分析 xff0c
  • 七周七语言——Prolog(二)

    1 递归 首先来看一个知识库 xff1a father zeb john boy sr father john boy sr john boy jr ancestor X Y father X Y ancestor X Y father X
  • 上传图片到阿里云OSS和获取上传图片的外网url的步骤

    啥都不说 直接上代码 1 html lt form action 61 34 bcis api headImgUpload json 34 method 61 34 post 34 enctype 61 34 multipart form
  • 如何提取到网页上播放的视频

    1 在播放视频页面的空白处点击右键 xff0c 会弹出菜单 xff0c 在菜单中选择审查元素 2 弹出的页面如图所示 xff0c 我们点击第二个network 3 利用size这一栏点击一下他就会按照文件大小就可以查找到视频 xff0c 一
  • Nodejs如何调用Dll模块

    苏格团队作者 xff1a Tomey 一 为什么需要用node js调用dll xff1f 公司项目采用Electron xff08 electronjs org xff09 开发pc应用 xff0c 会涉及到与底层硬件设备的通信 xff0
  • PyShark入门(1):简介

    原文地址 xff1a http zodiacg net 2016 07 in 本系列文章译自thePacketGeek的系列文章 原创翻译 xff0c 转载请注明出处 文章作者以PyShark为基础开发了Cloud Pcap xff0c 一
  • 将元素添加到List集合的第一位

    2019独角兽企业重金招聘Python工程师标准 gt gt gt list add 1 object 看一下add方法的注释 Inserts the specified element at the specified position
  • KMS激活时,常见的错误及处理

    0x80072EFE 出现这种是错误因为服务器响应超时或与服务器连接已丢失 xff0c 网络连接的问题 解决方法 xff1a 暂时关闭防火墙和杀毒软件 xff0c 将网卡禁用再启用 xff0c 确保网络是通的 0x8007232B 过 30
  • 精彩网页

    新华网美国频道 xff1a http us xinhuanet com php加密网址 xff1a https www phpjiami com 转载于 https www cnblogs com net5x p 6570727 html
  • java集合类(二)List学习

    接上篇 java集合类 xff08 一 xff09 List接口继承了Collection接口和Iterable接口 xff0c 即同样含有Collection和 Iterable的特性 xff0c 还有方法 xff0c 其基本方法有 xf
  • 构建安全的数据访问-部署注意事项(九)

    部署注意事项 以安全方式设计和开发的数据访问组件如果不以安全的方式进行部署 xff0c 仍然容易受到攻击 常见的部署做法是使数据访问代码和数据库驻留在单独的服务器上 这些服务器通常由内部防火墙隔开 xff0c 这就引进了额外的部署注意事项
  • matlab练习程序(随机直线采样)

    我只是感觉好玩 xff0c 写了这样一段程序 原理就是先随机生成两个点 xff0c 然后根据这两个点画直线 xff0c 最后在直线上的像素保留 xff0c 没在直线上的像素丢弃就行了 最后生成了一幅含有很多空洞的图像 当然 xff0c 对含
  • 跳一跳j算法ava代码_麻将游戏算法深入解析及实现代码

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