1 Star 0 Fork 0

rock/mahjong-test

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
MJ.cpp 83.26 KB
一键复制 编辑 原始数据 按行查看 历史
快货运 提交于 2017-01-21 16:59 . update
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397
#include "CJ.h"
//构造
CMJ::CMJ()
{
m_9LBD = false;
m_13Y = false;
m_4AK = false;
m_AKNum = 0;
m_MKNum = 0;
}
//析构
CMJ::~CMJ()
{
}
//初始化
void CMJ::Init()
{
m_9LBD = false;
m_13Y = false;
m_4AK = false;
m_AKNum = 0;
m_MKNum = 0;
}
//加入新牌,并排序
bool CMJ::AddPai(int p_Type,int p_Value)
{
int iSize = m_MyPAIVec[p_Type].size();
bool t_Find = false;
vector< int >::iterator Iter;
for(Iter = m_MyPAIVec[p_Type].begin();Iter !=m_MyPAIVec[p_Type].end(); Iter++)
{
if((*Iter)>p_Value)
{
m_MyPAIVec[p_Type].insert(Iter,p_Value);
t_Find = true;
break;
}
}
if(t_Find==false)
{
m_MyPAIVec[p_Type].push_back(p_Value);
}
m_LastPAI.m_Type = p_Type;
m_LastPAI.m_Value = p_Value;
return true;
}
//取得对应的牌在牌墙的索引
int CMJ::GetPaiIndex(int p_Type,int p_Value)
{
int count = 0;
for(UINT i = 0 ; i < 6 ; i++ )
{
vector< int >::iterator Iter;
for(Iter = m_MyPAIVec[i].begin();Iter !=m_MyPAIVec[i].end(); Iter++)
{
if(p_Type==i&&(*Iter)==p_Value)
{
return count;
}
count++;
}
}
return -1;
}
//打牌
bool CMJ::DelPai(int PaiIndex)
{
int count = 0;
for(UINT i = 0 ; i < 6 ; i++ )
{
vector< int >::iterator Iter;
for(Iter = m_MyPAIVec[i].begin();Iter !=m_MyPAIVec[i].end(); Iter++)
{
if(count==PaiIndex)
{
m_MyPAIVec[i].erase(Iter);
return true;
}
count++;
}
}
return false;
}
//删除牌
bool CMJ::DelPai(int p_Type,int p_Value)
{
vector< int >::iterator Iter;
for(Iter = m_MyPAIVec[p_Type].begin();Iter !=m_MyPAIVec[p_Type].end(); Iter++)
{
if((*Iter)==p_Value)
{
m_MyPAIVec[p_Type].erase(Iter);
return true;
}
}
return false;
}
//清空牌
void CMJ::CleanUp()
{
for(UINT i = 0 ; i < 6 ; i++ )
{
m_MyPAIVec[i].clear();
m_ChiPAIVec[i].clear();
m_PengPAIVec[i].clear();
m_GangPAIVec[i].clear();
}
}
//取得胡牌信息
stGoodInfo *CMJ::GetInfo()
{
return &m_GoodInfo;
}
//对所有的牌进行函数调用
void CMJ::PrintAllPai()
{
cout<<" ";
for(UINT i = 0 ; i < 13 ; i++ )
{
cout<<i<<" - ";
}
cout<<endl;
int icount = 0;
//箭牌
if(m_MyPAIVec[0].empty()==false)
{
vector< int >::iterator Iter;
for(Iter = m_MyPAIVec[0].begin();Iter !=m_MyPAIVec[0].end(); Iter++)
{
switch(*Iter)
{
case 1:
cout<<"[ 中]";
break;
case 2:
cout<<"[ 发]";
break;
case 3:
cout<<"[ 白]";
break;
}
icount++;
}
}
cout<<endl;
for(UINT i =0 ; i < icount; i++ )
{
cout<<" ";
}
//风牌
if(m_MyPAIVec[1].empty()==false)
{
vector< int >::iterator Iter;
for(Iter = m_MyPAIVec[1].begin();Iter !=m_MyPAIVec[1].end(); Iter++)
{
switch(*Iter)
{
case 1:
cout<<"[ 东]";
break;
case 2:
cout<<"[ 南]";
break;
case 3:
cout<<"[ 西]";
break;
case 4:
cout<<"[ 北]";
break;
}
icount++;
}
}
cout<<endl;
for(UINT i =0 ; i < icount; i++ )
{
cout<<" ";
}
//万
if(m_MyPAIVec[2].empty()==false)
{
vector< int >::iterator Iter;
for(Iter = m_MyPAIVec[2].begin();Iter !=m_MyPAIVec[2].end(); Iter++)
{
cout<<"["<<(*Iter)<<"万]";
icount++;
}
}
cout<<endl;
for(UINT i =0 ; i < icount; i++ )
{
cout<<" ";
}
//条
if(m_MyPAIVec[3].empty()==false)
{
vector< int >::iterator Iter;
for(Iter = m_MyPAIVec[3].begin();Iter !=m_MyPAIVec[3].end(); Iter++)
{
cout<<"["<<(*Iter)<<"条]";
icount++;
}
}
cout<<endl;
for(UINT i =0 ; i < icount; i++ )
{
cout<<" ";
}
//饼
if(m_MyPAIVec[4].empty()==false)
{
vector< int >::iterator Iter;
for(Iter = m_MyPAIVec[4].begin();Iter !=m_MyPAIVec[4].end(); Iter++)
{
cout<<"["<<(*Iter)<<"饼]";
icount++;
}
}
cout<<endl;
for(UINT i =0 ; i < icount; i++ )
{
cout<<" ";
}
}
//对一张牌进行输出
void CMJ::PrintPai(int p_Type,int p_Value)
{
//箭牌
if(p_Type==0)
{
switch(p_Value)
{
case 1:
cout<<"[中]";
break;
case 2:
cout<<"[发]";
break;
case 3:
cout<<"[白]";
break;
}
}
//风牌
if(p_Type==1)
{
switch(p_Value)
{
case 1:
cout<<"[东]";
break;
case 2:
cout<<"[南]";
break;
case 3:
cout<<"[西]";
break;
case 4:
cout<<"[北]";
break;
}
}
//万
if(p_Type==2)
{
cout<<"["<<p_Value<<"万]";
}
//条
if(p_Type==3)
{
cout<<"["<<p_Value<<"条]";
}
//饼
if(p_Type==4)
{
cout<<"["<<p_Value<<"饼]";
}
}
//吃牌
bool CMJ::CheckChiPai(int p_Type,int p_Value)
{
m_TempChiPAIVec.clear();
//饼
if(m_MyPAIVec[p_Type].empty()==false)
{
int iSize = m_MyPAIVec[p_Type].size();
if( iSize >= 2)
{
for(UINT i = 0 ; i < iSize-1 ; i++ )
{
if((m_MyPAIVec[p_Type][i]==(p_Value-2))&&(m_MyPAIVec[p_Type][i+1]==(p_Value-1)))
{
stCHI t_Chi;
t_Chi.m_Type = p_Type;
t_Chi.m_Value1 = p_Value-2;
t_Chi.m_Value2 = p_Value-1;
t_Chi.m_Value3 = p_Value;
m_TempChiPAIVec.push_back(t_Chi);
}
if((m_MyPAIVec[p_Type][i]==(p_Value-1))&&(m_MyPAIVec[p_Type][i+1]==(p_Value+1)))
{
stCHI t_Chi;
t_Chi.m_Type = p_Type;
t_Chi.m_Value1 = p_Value-1;
t_Chi.m_Value2 = p_Value;
t_Chi.m_Value3 = p_Value+1;
m_TempChiPAIVec.push_back(t_Chi);
}
if((m_MyPAIVec[p_Type][i]==(p_Value+1))&&(m_MyPAIVec[p_Type][i+1]==(p_Value+2)))
{
stCHI t_Chi;
t_Chi.m_Type = p_Type;
t_Chi.m_Value1 = p_Value;
t_Chi.m_Value2 = p_Value+1;
t_Chi.m_Value3 = p_Value+2;
m_TempChiPAIVec.push_back(t_Chi);
}
}
}
//假设吃B,已有ABC
if( iSize >= 3)
{
for(UINT i = 1 ; i < iSize-1 ; i++ )
{
if((m_MyPAIVec[p_Type][i-1]==(p_Value-1))&&(m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+1]==(p_Value+1)))
{
stCHI t_Chi;
t_Chi.m_Type = p_Type;
t_Chi.m_Value1 = p_Value-1;
t_Chi.m_Value2 = p_Value;
t_Chi.m_Value3 = p_Value+1;
m_TempChiPAIVec.push_back(t_Chi);
}
}
}
//假设吃B,已有ABBC
if( iSize >= 4)
{
for(UINT i = 1 ; i < iSize-2 ; i++ )
{
if((m_MyPAIVec[p_Type][i-1]==(p_Value-1))&&(m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+2]==(p_Value+1)))
{
stCHI t_Chi;
t_Chi.m_Type = p_Type;
t_Chi.m_Value1 = p_Value-1;
t_Chi.m_Value2 = p_Value;
t_Chi.m_Value3 = p_Value+1;
m_TempChiPAIVec.push_back(t_Chi);
}
}
}
//假设吃B,已有ABBBC
if( iSize >= 5)
{
for(UINT i = 1 ; i < iSize-3 ; i++ )
{
if((m_MyPAIVec[p_Type][i-1]==(p_Value-1))&&(m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+3]==(p_Value+1)))
{
stCHI t_Chi;
t_Chi.m_Type = p_Type;
t_Chi.m_Value1 = p_Value-1;
t_Chi.m_Value2 = p_Value;
t_Chi.m_Value3 = p_Value+1;
m_TempChiPAIVec.push_back(t_Chi);
}
}
}
//假设吃B,已有ABBBBC
if( iSize >= 6)
{
for(UINT i = 1 ; i < iSize-4 ; i++ )
{
if((m_MyPAIVec[p_Type][i-1]==(p_Value-1))&&(m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+4]==(p_Value+1)))
{
stCHI t_Chi;
t_Chi.m_Type = p_Type;
t_Chi.m_Value1 = p_Value-1;
t_Chi.m_Value2 = p_Value;
t_Chi.m_Value3 = p_Value+1;
m_TempChiPAIVec.push_back(t_Chi);
}
}
}
if(m_TempChiPAIVec.size() > 0)
{
return true;
}
}
return false;
}
//吃牌
bool CMJ::DoChiPai(int p_iIndex,int p_Type,int p_Value)
{
AddPai(p_Type,p_Value);
vector<stCHI>::iterator Iter;
int icount = 0;
for(Iter = m_TempChiPAIVec.begin(); Iter != m_TempChiPAIVec.end(); Iter++ )
{
if(icount == p_iIndex)
{
DelPai((*Iter).m_Type,(*Iter).m_Value1);
DelPai((*Iter).m_Type,(*Iter).m_Value2);
DelPai((*Iter).m_Type,(*Iter).m_Value3);
m_ChiPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value1);
m_ChiPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value2);
m_ChiPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value3);
return true;
}
icount++;
}
return false;
}
//对可吃的组合进行输出
void CMJ::PrintChiChosePai()
{
cout<<"================吃牌组合======================="<<endl;
vector<stCHI>::iterator Iter;
for(Iter = m_TempChiPAIVec.begin(); Iter != m_TempChiPAIVec.end();Iter++)
{
//万
if((*Iter).m_Type==2)
{
cout<<"["<<(*Iter).m_Value1<<"万";
cout<<""<<(*Iter).m_Value2<<"万";
cout<<""<<(*Iter).m_Value3<<"万]";
}
//条
if((*Iter).m_Type==3)
{
cout<<"["<<(*Iter).m_Value1<<"条";
cout<<""<<(*Iter).m_Value2<<"条";
cout<<""<<(*Iter).m_Value3<<"条]";
}
//饼
if((*Iter).m_Type==4)
{
cout<<"["<<(*Iter).m_Value1<<"饼";
cout<<""<<(*Iter).m_Value2<<"饼";
cout<<""<<(*Iter).m_Value3<<"饼]";
}
}
cout<<endl<<"========================================="<<endl;
}
//对可碰的组合进行输出
void CMJ::PrintPengChosePai()
{
cout<<"=====================碰牌=================="<<endl;
vector<stPAI>::iterator Iter;
for(Iter = m_TempPengPAIVec.begin(); Iter != m_TempPengPAIVec.end();Iter++)
{
//万
if((*Iter).m_Type==2)
{
cout<<"["<<(*Iter).m_Value<<"万";
cout<<""<<(*Iter).m_Value<<"万";
cout<<""<<(*Iter).m_Value<<"万]";
}
//条
if((*Iter).m_Type==3)
{
cout<<"["<<(*Iter).m_Value<<"条";
cout<<""<<(*Iter).m_Value<<"条";
cout<<""<<(*Iter).m_Value<<"条]";
}
//饼
if((*Iter).m_Type==4)
{
cout<<"["<<(*Iter).m_Value<<"饼";
cout<<""<<(*Iter).m_Value<<"饼";
cout<<""<<(*Iter).m_Value<<"饼]";
}
}
cout<<endl<<"========================================="<<endl;
}
//对可杠的组合进行输出
void CMJ::PrintGangChosePai()
{
cout<<"====================杠牌==================="<<endl;
vector<stPAI>::iterator Iter;
for(Iter = m_TempGangPAIVec.begin(); Iter != m_TempGangPAIVec.end();Iter++)
{
//万
if((*Iter).m_Type==2)
{
cout<<"["<<(*Iter).m_Value<<"万";
cout<<""<<(*Iter).m_Value<<"万";
cout<<""<<(*Iter).m_Value<<"万";
cout<<""<<(*Iter).m_Value<<"万]";
}
//条
if((*Iter).m_Type==3)
{
cout<<"["<<(*Iter).m_Value<<"条";
cout<<""<<(*Iter).m_Value<<"条";
cout<<""<<(*Iter).m_Value<<"条";
cout<<""<<(*Iter).m_Value<<"条]";
}
//饼
if((*Iter).m_Type==4)
{
cout<<"["<<(*Iter).m_Value<<"饼";
cout<<""<<(*Iter).m_Value<<"饼";
cout<<""<<(*Iter).m_Value<<"饼";
cout<<""<<(*Iter).m_Value<<"饼]";
}
}
cout<<endl<<"========================================="<<endl;
}
//取得吃牌组合数
UINT CMJ::GetChiChoseNum()
{
return m_TempChiPAIVec.size();
}
//碰牌
bool CMJ::CheckPengPai(int p_Type,int p_Value)
{
m_TempPengPAIVec.clear();
//饼
if(m_MyPAIVec[p_Type].empty()==false)
{
int iSize = m_MyPAIVec[p_Type].size();
if( iSize >= 2)
{
for(UINT i = 0 ; i < iSize-1 ; i++ )
{
if((m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+1]==p_Value))
{
stPAI t_Peng;
t_Peng.m_Type = p_Type;
t_Peng.m_Value = p_Value;
m_TempPengPAIVec.push_back(t_Peng);
break;
}
}
}
if(m_TempPengPAIVec.size() > 0)
{
return true;
}
}
return false;
}
//碰牌
bool CMJ::DoPengPai(int p_Type,int p_Value)
{
AddPai(p_Type,p_Value);
vector<stPAI>::iterator Iter;
for(Iter = m_TempPengPAIVec.begin(); Iter != m_TempPengPAIVec.end(); Iter++ )
{
DelPai((*Iter).m_Type,(*Iter).m_Value);
DelPai((*Iter).m_Type,(*Iter).m_Value);
DelPai((*Iter).m_Type,(*Iter).m_Value);
m_PengPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);
m_PengPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);
m_PengPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);
return true;
}
return false;
}
//杠牌
bool CMJ::CheckGangPai(int p_Type,int p_Value)
{
m_TempGangPAIVec.clear();
//饼
if(m_MyPAIVec[p_Type].empty()==false)
{
int iSize = m_MyPAIVec[p_Type].size();
if( iSize >= 3)
{
for(UINT i = 0 ; i < iSize-2 ; i++ )
{
if((m_MyPAIVec[p_Type][i]==p_Value)&&(m_MyPAIVec[p_Type][i+1]==p_Value)&&(m_MyPAIVec[p_Type][i+2]==p_Value))
{
stPAI t_Gang;
t_Gang.m_Type = p_Type;
t_Gang.m_Value = p_Value;
m_TempGangPAIVec.push_back(t_Gang);
break;
}
}
}
if(m_TempGangPAIVec.size() > 0)
{
return true;
}
}
return false;
}
//杠牌
bool CMJ::DoGangPai(int p_Type,int p_Value)
{
AddPai(p_Type,p_Value);
vector<stPAI>::iterator Iter;
for(Iter = m_TempGangPAIVec.begin(); Iter != m_TempGangPAIVec.end(); Iter++ )
{
DelPai((*Iter).m_Type,(*Iter).m_Value);
DelPai((*Iter).m_Type,(*Iter).m_Value);
DelPai((*Iter).m_Type,(*Iter).m_Value);
DelPai((*Iter).m_Type,(*Iter).m_Value);
//排序放入
if(m_GangPAIVec[(*Iter).m_Type].empty())
{
m_GangPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);
m_GangPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);
m_GangPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);
m_GangPAIVec[(*Iter).m_Type].push_back((*Iter).m_Value);
}
else
{
vector<int>::iterator Iter2;
for(Iter2 = m_GangPAIVec[(*Iter).m_Type].begin(); Iter2 != m_GangPAIVec[(*Iter).m_Type].end(); Iter2++ )
{
if((*Iter2)>(*Iter).m_Value)
{
m_GangPAIVec[(*Iter).m_Type].insert(Iter2,(*Iter).m_Value);
m_GangPAIVec[(*Iter).m_Type].insert(Iter2,(*Iter).m_Value);
m_GangPAIVec[(*Iter).m_Type].insert(Iter2,(*Iter).m_Value);
m_GangPAIVec[(*Iter).m_Type].insert(Iter2,(*Iter).m_Value);
break;
}
}
}
return true;
}
return false;
}
//检测是否胡牌
bool CMJ::CheckAllPai(bool GetOrPut)
{
if(GetOrPut == MJPAI_GETPAI)
{
//检查大四喜
if(CheckD4X_HU())
{
strcpy(m_GoodInfo.m_GoodName,"大四喜");
m_GoodInfo.m_GoodValue = 88;
return true;
}
//检查大三元
if(CheckD3Y_HU())
{
strcpy(m_GoodInfo.m_GoodName,"大三元");
m_GoodInfo.m_GoodValue = 88;
return true;
}
//检查绿一色
if(CheckL1S_HU())
{
strcpy(m_GoodInfo.m_GoodName,"绿一色");
m_GoodInfo.m_GoodValue = 88;
return true;
}
//检查九莲宝灯
if(Check9LBD_HU())
{
strcpy(m_GoodInfo.m_GoodName,"九莲宝灯");
m_GoodInfo.m_GoodValue = 88;
return true;
}
//检查四杠
if(Check4Gang_HU())
{
strcpy(m_GoodInfo.m_GoodName,"四杠");
m_GoodInfo.m_GoodValue = 88;
return true;
}
//检查连七对
if(CheckL7D_HU())
{
strcpy(m_GoodInfo.m_GoodName,"连七对");
m_GoodInfo.m_GoodValue = 88;
return true;
}
//检查十三幺
if(Chekc13Y_HU())
{
strcpy(m_GoodInfo.m_GoodName,"十三幺");
m_GoodInfo.m_GoodValue = 88;
return true;
}
//检查清幺九
if(CheckQY9_HU())
{
strcpy(m_GoodInfo.m_GoodName,"清幺九");
m_GoodInfo.m_GoodValue = 64;
return true;
}
//检查小四喜
if(CheckX4X_HU())
{
strcpy(m_GoodInfo.m_GoodName,"小四喜");
m_GoodInfo.m_GoodValue = 64;
return true;
}
//检查小三元
if(CheckX3Y_HU())
{
strcpy(m_GoodInfo.m_GoodName,"小三元");
m_GoodInfo.m_GoodValue = 64;
return true;
}
//检测是否四暗刻
if(Check4AK_HU())
{
strcpy(m_GoodInfo.m_GoodName,"四暗刻");
m_GoodInfo.m_GoodValue = 64;
return true;
}
//检测是否一色双龙会
if(Check1S2LH_HU())
{
strcpy(m_GoodInfo.m_GoodName,"一色双龙会");
m_GoodInfo.m_GoodValue = 64;
return true;
}
//检测是否一色四同顺
if(Check1S4TS_HU())
{
strcpy(m_GoodInfo.m_GoodName,"一色四同顺");
m_GoodInfo.m_GoodValue = 48;
return true;
}
//检测是否一色四节高
if(Check1S4JG_HU())
{
strcpy(m_GoodInfo.m_GoodName,"一色四节高");
m_GoodInfo.m_GoodValue = 48;
return true;
}
//检测是否一色四步高
if(Check1S4BG_HU())
{
strcpy(m_GoodInfo.m_GoodName,"一色四步高");
m_GoodInfo.m_GoodValue = 32;
return true;
}
//检测是否三杠
if(Check3Gang_HU())
{
strcpy(m_GoodInfo.m_GoodName,"三杠");
m_GoodInfo.m_GoodValue = 32;
return true;
}
//检测是否七对
if(Check7D_HU())
{
strcpy(m_GoodInfo.m_GoodName,"七对");
m_GoodInfo.m_GoodValue = 24;
return true;
}
//检测是否七星不靠
if(Check7XBK_HU())
{
strcpy(m_GoodInfo.m_GoodName,"七星不靠");
m_GoodInfo.m_GoodValue = 24;
return true;
}
//检测是否全双刻
if(CheckQSK_HU())
{
strcpy(m_GoodInfo.m_GoodName,"全双刻");
m_GoodInfo.m_GoodValue = 24;
return true;
}
//检测是否清一色
if(CheckQ1S_HU())
{
strcpy(m_GoodInfo.m_GoodName,"清一色");
m_GoodInfo.m_GoodValue = 24;
return true;
}
//检测是否一色三同顺
if(Check1S3TS_HU())
{
strcpy(m_GoodInfo.m_GoodName,"一色三同顺");
m_GoodInfo.m_GoodValue = 24;
return true;
}
//检测是否一色三节高
if(Check1S3JG_HU())
{
strcpy(m_GoodInfo.m_GoodName,"一色三节高");
m_GoodInfo.m_GoodValue = 24;
return true;
}
//检测是否全大
if(CheckQD_HU())
{
strcpy(m_GoodInfo.m_GoodName,"全大");
m_GoodInfo.m_GoodValue = 24;
return true;
}
//检测是否全中
if(CheckQZ_HU())
{
strcpy(m_GoodInfo.m_GoodName,"全中");
m_GoodInfo.m_GoodValue = 24;
return true;
}
//检测是否全小
if(CheckQX_HU())
{
strcpy(m_GoodInfo.m_GoodName,"全小");
m_GoodInfo.m_GoodValue = 24;
return true;
}
//检测是否青龙
if(CheckQL_HU())
{
strcpy(m_GoodInfo.m_GoodName,"青龙");
m_GoodInfo.m_GoodValue = 16;
return true;
}
//检测是否三色双龙会
if(Check3S2LH_HU())
{
strcpy(m_GoodInfo.m_GoodName,"三色双龙会");
m_GoodInfo.m_GoodValue = 16;
return true;
}
//检测是否一色三步高
if(Check1S3BG_HU())
{
strcpy(m_GoodInfo.m_GoodName,"一色三步高");
m_GoodInfo.m_GoodValue = 16;
return true;
}
//检测是否单调将
if(CheckDDJ_HU())
{
strcpy(m_GoodInfo.m_GoodName,"单调将");
m_GoodInfo.m_GoodValue = 1;
return true;
}
//检测是否平胡
if(CheckHU())
{
strcpy(m_GoodInfo.m_GoodName,"平胡");
m_GoodInfo.m_GoodValue = 1;
return true;
}
}
else
{
//判断是否听连宝灯
m_9LBD = Check9LBD_TING();
if(m_9LBD)return true;
//判断是否听幺
m_13Y = Check13Y_TING();
if(m_13Y)return true;
//判断是否四暗刻
m_4AK = Check4AK_TING();
if(m_4AK)return true;
//检测是否听头
return CheckTING();
}
return false;
}
//检测是否胡牌(张)
inline bool CMJ::CheckAAPai(int iValue1,int iValue2)
{
if(iValue1 == iValue2)return true;
return false;
}
//检测是否三连张
inline bool CMJ::CheckABCPai(int iValue1,int iValue2,int iValue3)
{
if(iValue1 == (iValue2-1)&&iValue2 == (iValue3-1))return true;
return false;
}
//检测是否三重张
inline bool CMJ::CheckAAAPai(int iValue1,int iValue2,int iValue3)
{
if(iValue1 == iValue2&&iValue2 == iValue3)return true;
return false;
}
//检测是否四重张
inline bool CMJ::CheckAAAAPai(int iValue1,int iValue2,int iValue3,int iValue4)
{
if(iValue1 == iValue2&&iValue2 == iValue3&&iValue3 == iValue4)return true;
return false;
}
//检测是否三连对
inline bool CMJ::CheckAABBCCPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6)
{
if(iValue1 == iValue2&&iValue3 == iValue4&&iValue5 == iValue6)
{
if((iValue1 == iValue3-1)&&(iValue3 == iValue5-1))
{
return true;
}
}
return false;
}
//检测是否三连高压
inline bool CMJ::CheckAAABBBCCCPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9)
{
if((iValue1 == iValue2&&iValue2 == iValue3)&&(iValue4 == iValue5&&iValue5 == iValue6)&&(iValue7 == iValue8&&iValue8 == iValue9))
{
if((iValue1 == iValue4-1)&&(iValue4 == iValue7-1))
{
return true;
}
}
return false;
}
//检测是否三连刻
inline bool CMJ::CheckAAAABBBBCCCCPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12)
{
if((iValue1 == iValue2&&iValue2 == iValue3&&iValue3 == iValue4)&&(iValue5 == iValue6&&iValue6 == iValue7&&iValue7 == iValue8)&&(iValue9 == iValue10&&iValue10 == iValue11&&iValue11 == iValue12))
{
if((iValue1 == iValue5-1)&&(iValue5 == iValue9-1))
{
return true;
}
}
return false;
}
//检测是否六连对
inline bool CMJ::CheckAABBCCDDEEFFPai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12)
{
if(iValue1 == iValue2&&iValue3 == iValue4&&iValue5 == iValue6&&iValue7 == iValue8&&iValue9 == iValue10&&iValue11 == iValue12)
{
if((iValue1 == iValue3-1)&&(iValue3 == iValue5-1)&&(iValue5 == iValue7-1)&&(iValue7 == iValue9-1)&&(iValue9 == iValue11-1))
{
return true;
}
}
return false;
}
//检测是否胡牌(张)
bool CMJ::Check5Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5)
{
//如果是左边两个为将,右边为三重张或三连张
if(CheckAAPai(iValue1,iValue2))
{
if(Check3Pai(iValue3,iValue4,iValue5))return true;
}
//如果中间两个为将
if(CheckAAAPai(iValue2,iValue3,iValue4))
{
if(CheckABCPai(iValue1,iValue4,iValue5))return true;
}
//如果是左边两个为将,右边为三重张或三连张
if(CheckAAPai(iValue4,iValue5))
{
if(Check3Pai(iValue1,iValue2,iValue3))return true;
}
return false;
}
//检测是否胡牌(张)
bool CMJ::Check8Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8)
{
//如果是左边两个为将,右边为三重张或三连张
if(CheckAAPai(iValue1,iValue2))
{
return Check6Pai(iValue3,iValue4,iValue5,iValue6,iValue7,iValue8);
}
//如果是中间两个为将,左右边为三重张或三连张
if(CheckAAPai(iValue4,iValue5))
{
if(Check3Pai(iValue1,iValue2,iValue3)&&Check3Pai(iValue6,iValue7,iValue8))return true;
}
//如果是右边两个为将,左边为三重张或三连张
if(CheckAAPai(iValue7,iValue8))
{
return Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6);
}
return false;
}
//检测是否胡牌(张)
bool CMJ::Check11Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11)
{
//如果是左边两个为将
if(CheckAAPai(iValue1,iValue2))
{
return Check9Pai(iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9,iValue10,iValue11);
}
//如果是中间两个为将
if(CheckAAPai(iValue4,iValue5))
{
//无AAA,全ABC
if(Check3Pai(iValue1,iValue2,iValue3)&&Check6Pai(iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;
}
//如果是右边两个为将
if(CheckAAPai(iValue7,iValue8))
{
//无AAA,全ABC
if(Check3Pai(iValue9,iValue10,iValue11)&&Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6))return true;
}
//如果是右边两个为将
if(CheckAAPai(iValue10,iValue11))
{
return Check9Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9);
}
return false;
}
//检测是否胡牌(张)
bool CMJ::Check14Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12,int iValue13,int iValue14)
{
//如果是左边两个为将,右边为三重张或三连张
if(CheckAAPai(iValue1,iValue2))
{
//无AAA,全ABC
if(Check12Pai(iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9,iValue10,iValue11,iValue12,iValue13,iValue14))return true;
return false;
}
//如果是中间两个为将,左右边为三重张或三连张
if(CheckAAPai(iValue4,iValue5))
{
//无AAA,全ABC
if(Check3Pai(iValue1,iValue2,iValue3)&&Check9Pai(iValue6,iValue7,iValue8,iValue9,iValue10,iValue11,iValue12,iValue13,iValue14))return true;
return false;
}
//如果是中间两个为将,左右边为三重张或三连张
if(CheckAAPai(iValue7,iValue8))
{
//无AAA,全ABC
if(Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6)&&Check6Pai(iValue9,iValue10,iValue11,iValue12,iValue13,iValue14))return true;
return false;
}
//如果是中间两个为将,左右边为三重张或三连张
if(CheckAAPai(iValue10,iValue11))
{
//无AAA,全ABC
if(Check3Pai(iValue12,iValue13,iValue14)&&Check9Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;
return false;
}
//如果是右边两个为将,左右边为三重张或三连张
if(CheckAAPai(iValue13,iValue14))
{
//无AAA,全ABC
if(Check12Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9,iValue10,iValue11,iValue12))return true;
}
return false;
}
//检测是否胡牌(张)
bool CMJ::Check3Pai(int iValue1,int iValue2,int iValue3)
{
if(CheckABCPai(iValue1,iValue2,iValue3))return true;
if(CheckAAAPai(iValue1,iValue2,iValue3))return true;
return false;
}
//检测是否胡牌(张)
bool CMJ::Check6Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6)
{
if(Check3Pai(iValue1,iValue2,iValue3)&&Check3Pai(iValue4,iValue5,iValue6))return true;
if(Check3Pai(iValue1,iValue2,iValue3)&&Check3Pai(iValue4,iValue5,iValue6))return true;
//三连对
if(CheckAABBCCPai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6))return true;
//第一张牌四连张
if(CheckAAAAPai(iValue2,iValue3,iValue4,iValue5))
{
if(CheckABCPai(iValue1,iValue2,iValue6))return true;
}
return false;
}
//检测是否胡牌(张)
bool CMJ::Check9Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9)
{
if(CheckABCPai(iValue1,iValue2,iValue3)&&Check6Pai(iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;
if(CheckAAAPai(iValue1,iValue2,iValue3)&&Check6Pai(iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;
if(CheckABCPai(iValue7,iValue8,iValue9)&&Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6))return true;
if(CheckAAAPai(iValue7,iValue8,iValue9)&&Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6))return true;
return false;
}
//检测是否胡牌(张)
bool CMJ::Check12Pai(int iValue1,int iValue2,int iValue3,int iValue4,int iValue5,int iValue6,int iValue7,int iValue8,int iValue9,int iValue10,int iValue11,int iValue12)
{
if(CheckABCPai(iValue1,iValue2,iValue3)&&Check9Pai(iValue4,iValue5,iValue6,iValue7,iValue8,iValue9,iValue10,iValue11,iValue12))return true;
if(CheckAAAPai(iValue1,iValue2,iValue3)&&Check9Pai(iValue4,iValue5,iValue6,iValue7,iValue8,iValue9,iValue10,iValue11,iValue12))return true;
if(CheckABCPai(iValue10,iValue11,iValue12)&&Check9Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;
if(CheckAAAPai(iValue10,iValue11,iValue12)&&Check9Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6,iValue7,iValue8,iValue9))return true;
if(Check6Pai(iValue1,iValue2,iValue3,iValue4,iValue5,iValue6)&&Check6Pai(iValue7,iValue8,iValue9,iValue10,iValue11,iValue12))return true;
return false;
}
//检测是否是大四喜
bool CMJ::CheckD4X_HU()
{
//东西南北四杠
if(m_GangPAIVec[1].size()==16)
{
//将牌
for(int i = 0 ; i < 6 ; i++ )
{
if(m_MyPAIVec[i].size()==2)
{
//如果是将
if(m_MyPAIVec[i][0] == m_MyPAIVec[i][1])
{
return true;
}
}
}
}
return false;
}
//检则是否是大三元
bool CMJ::CheckD3Y_HU()
{
//中发白三杠
if(m_GangPAIVec[0].size()==12)
{
//将牌
for(int i = 0 ; i < 6 ; i++ )
{
if(m_MyPAIVec[i].size()==2)
{
//如果是将
if(m_MyPAIVec[i][0] == m_MyPAIVec[i][1])
{
return true;
}
}
}
}
return false;
}
//检测是否绿一色
bool CMJ::CheckL1S_HU()
{
//只准有发财和条
if(m_MyPAIVec[1].size()>0)return false;
if(m_MyPAIVec[2].size()>0)return false;
if(m_MyPAIVec[4].size()>0)return false;
if(m_MyPAIVec[5].size()>0)return false;
if(m_ChiPAIVec[1].size()>0)return false;
if(m_ChiPAIVec[2].size()>0)return false;
if(m_ChiPAIVec[4].size()>0)return false;
if(m_ChiPAIVec[5].size()>0)return false;
if(m_PengPAIVec[1].size()>0)return false;
if(m_PengPAIVec[2].size()>0)return false;
if(m_PengPAIVec[4].size()>0)return false;
if(m_PengPAIVec[5].size()>0)return false;
if(m_GangPAIVec[1].size()>0)return false;
if(m_GangPAIVec[2].size()>0)return false;
if(m_GangPAIVec[4].size()>0)return false;
if(m_GangPAIVec[5].size()>0)return false;
//对发财
if(m_MyPAIVec[0].size() ==2)
{
if(m_MyPAIVec[0][0]==2&&m_MyPAIVec[0][1]==2)
{
for(int i = 1 ;i < 6 ; i++)
{
if(i==3)continue;
if(m_MyPAIVec[i].size()>0)return false;
if(m_ChiPAIVec[i].size()>0)return false;
if(m_PengPAIVec[i].size()>0)return false;
if(m_GangPAIVec[i].size()>0)return false;
}
//吃
int iSize = m_ChiPAIVec[3].size();
if(iSize>0)
{
vector< int >::iterator Iter;
for(Iter = m_ChiPAIVec[3].begin();Iter != m_ChiPAIVec[3].end();Iter++ )
{
if((*Iter)==1)return false;
if((*Iter)==5)return false;
if((*Iter)==7)return false;
if((*Iter)==9)return false;
}
}
//碰
iSize = m_PengPAIVec[3].size();
if(iSize>0)
{
vector< int >::iterator Iter;
for(Iter = m_PengPAIVec[3].begin();Iter != m_PengPAIVec[3].end();Iter++ )
{
if((*Iter)==1)return false;
if((*Iter)==5)return false;
if((*Iter)==7)return false;
if((*Iter)==9)return false;
}
}
//杠
iSize = m_GangPAIVec[3].size();
if(iSize>0)
{
vector< int >::iterator Iter;
for(Iter = m_GangPAIVec[3].begin();Iter != m_GangPAIVec[3].end();Iter++ )
{
if((*Iter)==1)return false;
if((*Iter)==5)return false;
if((*Iter)==7)return false;
if((*Iter)==9)return false;
}
}
//起
iSize = m_MyPAIVec[3].size();
if(iSize>0)
{
vector< int >::iterator Iter;
for(Iter = m_MyPAIVec[3].begin();Iter != m_MyPAIVec[3].end();Iter++ )
{
if((*Iter)==1)return false;
if((*Iter)==5)return false;
if((*Iter)==7)return false;
if((*Iter)==9)return false;
}
}
}
}
else
{
return false;
}
//如果有三张
if(m_MyPAIVec[3].size() == 3)
{
if(Check3Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2]))return true;
}
//如果有六张
if(m_MyPAIVec[3].size() == 6)
{
if(Check6Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5]))return true;
}
//九张
if(m_MyPAIVec[3].size() == 9)
{
if(Check9Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8]))return true;
}
//十二张
if(m_MyPAIVec[3].size() == 12)
{
if(Check12Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8],m_MyPAIVec[3][9],m_MyPAIVec[3][10],m_MyPAIVec[3][11]))return true;
}
return false;
}
//检测是否九莲宝灯(胡)
bool CMJ::Check9LBD_HU()
{
if(m_9LBD)//如果已经成九连宝灯牌型
{
if(m_MyPAIVec[2].size()==14)return true;
if(m_MyPAIVec[3].size()==14)return true;
if(m_MyPAIVec[4].size()==14)return true;
}
return false;
}
//检测是否九莲宝灯牌型(听)
bool CMJ::Check9LBD_TING()
{
for(UINT i = 2 ; i < 5 ; i++ )
{
if(m_MyPAIVec[i].size()==13)
{
if(m_MyPAIVec[i][0]==1&&m_MyPAIVec[i][1]==1&&m_MyPAIVec[i][2]==1)
{
if(m_MyPAIVec[i][3]==2&&m_MyPAIVec[i][4]==3&&m_MyPAIVec[i][5]==4&&m_MyPAIVec[i][6]==5&&m_MyPAIVec[i][7]==6&&m_MyPAIVec[i][8]==7&&m_MyPAIVec[i][9]==8)
{
if(m_MyPAIVec[i][10]==9&&m_MyPAIVec[i][11]==9&&m_MyPAIVec[i][12]==9)
{
return true;
}
}
}
}
}
return false;
}
//检测是否是四杠
bool CMJ::Check4Gang_HU()
{
int iSize = 0;
for(UINT i = 0 ; i < 6 ; i++ )
{
iSize = m_GangPAIVec[i].size();
}
if(iSize == 16)
{
//将牌
for(int i = 0 ; i < 6 ; i++ )
{
//如果是将
if(CheckAAPai(m_MyPAIVec[i][0],m_MyPAIVec[i][1]))
{
return true;
}
}
}
return false;
}
//检测是否连七对
bool CMJ::CheckL7D_HU()
{
for(UINT i = 2 ; i < 5 ; i++ )
{
if(m_MyPAIVec[i].size()==14)
{
if(m_MyPAIVec[i][0]==1&&m_MyPAIVec[i][1]==1&&m_MyPAIVec[i][2]==2&&m_MyPAIVec[i][3]==2&&m_MyPAIVec[i][4]==3&&m_MyPAIVec[i][5]==3&&m_MyPAIVec[i][6]==4&&m_MyPAIVec[i][7]==4&&m_MyPAIVec[i][8]==5&&m_MyPAIVec[i][9]==5&&m_MyPAIVec[i][10]==6&&m_MyPAIVec[i][11]==6&&m_MyPAIVec[i][12]==7&&m_MyPAIVec[i][13]==7)
{
return true;
}
if(m_MyPAIVec[i][0]==2&&m_MyPAIVec[i][1]==2&&m_MyPAIVec[i][2]==3&&m_MyPAIVec[i][3]==3&&m_MyPAIVec[i][4]==4&&m_MyPAIVec[i][5]==4&&m_MyPAIVec[i][6]==5&&m_MyPAIVec[i][7]==5&&m_MyPAIVec[i][8]==6&&m_MyPAIVec[i][9]==6&&m_MyPAIVec[i][10]==7&&m_MyPAIVec[i][11]==7&&m_MyPAIVec[i][12]==8&&m_MyPAIVec[i][13]==8)
{
return true;
}
if(m_MyPAIVec[i][0]==3&&m_MyPAIVec[i][1]==3&&m_MyPAIVec[i][2]==4&&m_MyPAIVec[i][3]==4&&m_MyPAIVec[i][4]==5&&m_MyPAIVec[i][5]==5&&m_MyPAIVec[i][6]==6&&m_MyPAIVec[i][7]==6&&m_MyPAIVec[i][8]==7&&m_MyPAIVec[i][9]==7&&m_MyPAIVec[i][10]==8&&m_MyPAIVec[i][11]==8&&m_MyPAIVec[i][12]==9&&m_MyPAIVec[i][13]==9)
{
return true;
}
}
}
return false;
}
//检测是否胡十三幺
bool CMJ::Chekc13Y_HU()
{
if(m_13Y)
{
bool i13YSize[13] ;
for(UINT i = 0 ; i < 13 ; i++ )
{
i13YSize[i]=false;
}
//中发白
vector<int>::iterator Iter;
for(Iter = m_MyPAIVec[0].begin();Iter != m_MyPAIVec[0].end(); Iter++ )
{
if((*Iter)==1)
{
i13YSize[0]=true;
}
if((*Iter)==2)
{
i13YSize[1]=true;
}
if((*Iter)==3)
{
i13YSize[2]=true;
}
}
//东南西北风
for(Iter = m_MyPAIVec[1].begin();Iter != m_MyPAIVec[1].end(); Iter++ )
{
if((*Iter)==1)
{
i13YSize[3]=true;
}
if((*Iter)==2)
{
i13YSize[4]=true;
}
if((*Iter)==3)
{
i13YSize[5]=true;
}
if((*Iter)==4)
{
i13YSize[6]=true;
}
}
//一九万
for(Iter = m_MyPAIVec[2].begin();Iter != m_MyPAIVec[2].end(); Iter++ )
{
if((*Iter)==1)
{
i13YSize[7]=true;
}
if((*Iter)==9)
{
i13YSize[8]=true;
}
}
//一九条
for(Iter = m_MyPAIVec[3].begin();Iter != m_MyPAIVec[3].end(); Iter++ )
{
if((*Iter)==1)
{
i13YSize[9]=true;
}
if((*Iter)==9)
{
i13YSize[10]=true;
}
}
//一九饼
for(Iter = m_MyPAIVec[4].begin();Iter != m_MyPAIVec[4].end(); Iter++ )
{
if((*Iter)==1)
{
i13YSize[11]=true;
}
if((*Iter)==9)
{
i13YSize[12]=true;
}
}
int icount = 0;
for(UINT i = 0 ; i < 13 ; i++ )
{
if(i13YSize[i]==true)
{
icount++;
}
}
if(icount == 13)return true;
}
return false;
}
//检测是否清幺九
bool CMJ::CheckQY9_HU()
{
int iSize = 0;
int iCount = 0;
for(UINT i = 2 ; i < 5 ; i++ )
{
iSize = m_GangPAIVec[i].size();
iCount += iSize;
for(UINT j = 0 ; j < iSize ; j++ )
{
if(m_GangPAIVec[i][j]!=1||m_GangPAIVec[i][j]!=9)return false;
}
}
if(iCount == 12)
{
if(m_MyPAIVec[2].size()==2)
{
if(m_MyPAIVec[2][0]==1&&m_MyPAIVec[2][1]==1)return true;
if(m_MyPAIVec[2][0]==9&&m_MyPAIVec[2][1]==9)return true;
}
if(m_MyPAIVec[3].size()==3)
{
if(m_MyPAIVec[3][0]==1&&m_MyPAIVec[3][1]==1)return true;
if(m_MyPAIVec[3][0]==9&&m_MyPAIVec[3][1]==9)return true;
}
if(m_MyPAIVec[4].size()==4)
{
if(m_MyPAIVec[4][0]==1&&m_MyPAIVec[4][1]==1)return true;
if(m_MyPAIVec[4][0]==9&&m_MyPAIVec[4][1]==9)return true;
}
}
return false;
}
//检测是否胡小四喜
bool CMJ::CheckX4X_HU()
{
//东西南北四杠
if(m_GangPAIVec[1].size()==12)
{
//将牌的位置
int iJiangPos = -1;
//将牌
for(int i = 0 ; i < 6 ; i++ )
{
if(m_MyPAIVec[i].size()==5)
{
if(Check5Pai(m_MyPAIVec[i][0],m_MyPAIVec[i][1],m_MyPAIVec[i][2],m_MyPAIVec[i][3],m_MyPAIVec[i][4]))
{
return true;
}
}
if(m_MyPAIVec[i].size()==2)
{
//如果是将
if(CheckAAPai(m_MyPAIVec[i][0],m_MyPAIVec[i][1]))
{
iJiangPos = i;
break;
}
}
}
//
if(iJiangPos>0)
{
for(int i = 0 ; i < 6 ; i++ )
{
if(i!=iJiangPos)
{
if((m_MyPAIVec[i].size()==3))
{
if(Check3Pai(m_MyPAIVec[i][0],m_MyPAIVec[i][1],m_MyPAIVec[i][2]))return true;
}
}
}
}
}
return false;
}
//检测是否胡小三元
bool CMJ::CheckX3Y_HU()
{
//东西南北四杠
if(m_GangPAIVec[0].size()==8)
{
if(m_MyPAIVec[0].size()==5)
{
if(Check5Pai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2],m_MyPAIVec[0][3],m_MyPAIVec[0][4]))
{
return true;
}
else
{
return false;
}
}
else if(m_MyPAIVec[0].size()==2)
{
//如果是将
if(CheckAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1])==false)
{
return false;
}
}
else
{
return false;
}
return CheckHU();
}
return false;
}
//检测是否胡字一色
bool CMJ::CheckZ1S_HU()
{
//只准有字
if(m_MyPAIVec[2].size()>0)return false;
if(m_MyPAIVec[3].size()>0)return false;
if(m_MyPAIVec[4].size()>0)return false;
if(m_MyPAIVec[5].size()>0)return false;
if(m_ChiPAIVec[2].size()>0)return false;
if(m_ChiPAIVec[3].size()>0)return false;
if(m_ChiPAIVec[4].size()>0)return false;
if(m_ChiPAIVec[5].size()>0)return false;
if(m_PengPAIVec[2].size()>0)return false;
if(m_PengPAIVec[3].size()>0)return false;
if(m_PengPAIVec[4].size()>0)return false;
if(m_PengPAIVec[5].size()>0)return false;
if(m_GangPAIVec[2].size()>0)return false;
if(m_GangPAIVec[3].size()>0)return false;
if(m_GangPAIVec[4].size()>0)return false;
if(m_GangPAIVec[5].size()>0)return false;
int iSize = m_MyPAIVec[0].size();
if(iSize > 0)
{
if(iSize == 2)
{
if(m_MyPAIVec[0][0]==m_MyPAIVec[0][1])
{
iSize = m_MyPAIVec[1].size();
if(iSize == 0)return true;
if(iSize == 3)
{
if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2]))return true;
}
}
}
}
return false;
}
//检测是否四暗刻
bool CMJ::Check4AK_HU()
{
if(m_4AK)
{
//将牌
for(int i = 0 ; i < 6 ; i++ )
{
if(m_MyPAIVec[i].size()==2)
{
//如果是将
if(m_MyPAIVec[i][0] == m_MyPAIVec[i][1])
{
return true;
}
}
}
}
return false;
}
//检测是否一色双龙会
bool CMJ::Check1S2LH_HU()
{
//万,条,饼
for(UINT i = 0 ; i <= 4; i++ )
{
int iType = i;
if(m_MyPAIVec[iType].size()==14)
{
if(m_MyPAIVec[iType][0]==1&&m_MyPAIVec[iType][1]==1)
{
}
else
{
return false;
}
if(m_MyPAIVec[iType][2]==2&&m_MyPAIVec[iType][3]==2)
{
}
else
{
return false;
}
if(m_MyPAIVec[iType][4]==3&&m_MyPAIVec[iType][5]==3)
{
}
else
{
return false;
}
if(m_MyPAIVec[iType][6]==5&&m_MyPAIVec[iType][7]==5)
{
}
else
{
return false;
}
if(m_MyPAIVec[iType][8]==7&&m_MyPAIVec[iType][9]==7)
{
}
else
{
return false;
}
if(m_MyPAIVec[iType][10]==8&&m_MyPAIVec[iType][11]==8)
{
}
else
{
return false;
}
if(m_MyPAIVec[iType][12]==9&&m_MyPAIVec[iType][13]==9)
{
}
else
{
return false;
}
return true;
}
}
return false;
}
//检测是否一色四同顺
bool CMJ::Check1S4TS_HU()
{
//万,条,饼
for(UINT i = 0 ; i <= 4; i++ )
{
int iType = i;
//吃过的顺
int iSize1 = m_ChiPAIVec[iType].size();
//剩余牌墙中的顺
int iSize2 = m_MyPAIVec[iType].size();
//万
if(iSize1 + iSize2 >= 12)
{
//无吃的顺
if(iSize1==0)
{
if(iSize2==12)
{
//三连暗杠成顺
if(CheckAAAABBBBCCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11]))return CheckHU();
return false;
}
if(iSize2==14)
{
//三连暗杠成顺
if((m_MyPAIVec[iType][12]==(m_MyPAIVec[iType][13]))&&CheckAAAABBBBCCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11]))return true;
//三连暗杠成顺
if((m_MyPAIVec[iType][0]==(m_MyPAIVec[iType][1]))&&CheckAAAABBBBCCCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11],m_MyPAIVec[iType][12],m_MyPAIVec[iType][13]))return true;
return false;
}
}
//吃到一个顺
if(iSize1==3)
{
if(iSize2==9)
{
//三连高压
if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])
{
return CheckHU();
}
}
return false;
}
if(iSize2==11)
{
//三连高压
if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8]))
{
if(m_MyPAIVec[iType][9]==m_MyPAIVec[iType][10]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])
{
return true;
}
}
//三连高压
if(CheckAAABBBCCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10]))
{
if(m_MyPAIVec[iType][0]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][5]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][8])
{
return true;
}
}
return false;
}
}
//吃到二个顺
if(iSize1==6)
{
if(iSize2==6)
{
//三连对
if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][4])
{
return CheckHU();
}
}
}
return false;
}
if(iSize2==8)
{
//三连对
if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5]))
{
if(m_MyPAIVec[iType][6]==m_MyPAIVec[iType][7]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][4])
{
return true;
}
}
}
//三连对
if(CheckAABBCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7]))
{
if(m_MyPAIVec[iType][0]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][6])
{
return true;
}
}
}
return false;
}
}
//吃到三个顺
if(iSize1==9)
{
if(iSize2==3)
{
//顺子
if(CheckABCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][2])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][2])
{
if(m_ChiPAIVec[iType][6]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][7]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][8]==m_MyPAIVec[iType][2])
{
return CheckHU();
}
}
}
}
return false;
}
if(iSize2==5)
{
//顺子
if(CheckABCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2]))
{
if(m_MyPAIVec[iType][3]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][2])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][2])
{
if(m_ChiPAIVec[iType][6]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][7]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][8]==m_MyPAIVec[iType][2])
{
return true;
}
}
}
}
//顺子
if(CheckABCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4]))
{
if(m_MyPAIVec[iType][0]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][4])
{
if(m_ChiPAIVec[iType][6]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][7]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][8]==m_MyPAIVec[iType][4])
{
return true;
}
}
}
}
return false;
}
}
//吃到三连顺
if(iSize1==12)
{
if((m_ChiPAIVec[iType][0]==m_ChiPAIVec[iType][3])&&(m_ChiPAIVec[iType][3]==m_ChiPAIVec[iType][6])&&(m_ChiPAIVec[iType][6]==m_ChiPAIVec[iType][9]))
{
return CheckHU();
}
return false;
}
}
}
return false;
}
//检测是否一色四节高
bool CMJ::Check1S4JG_HU()
{
//万,条,饼
for(UINT i = 2 ; i <= 4 ; i++)
{
int iType = i;
if(m_GangPAIVec[iType].size()==16)
{
if((m_GangPAIVec[iType][0]==m_GangPAIVec[iType][4]-1)&&(m_GangPAIVec[iType][4]==m_GangPAIVec[iType][8]-1)&&(m_GangPAIVec[iType][8]==m_GangPAIVec[iType][12]-1))
{
return CheckHU();
}
}
}
return false;
}
//检测是否一色四步高
bool CMJ::Check1S4BG_HU()
{
/*//万
if(m_GangPAIVec[2].size()==16)
{
if((m_GangPAIVec[2][0]==m_GangPAIVec[2][4]-1)&&(m_GangPAIVec[2][4]==m_GangPAIVec[2][8]-1)&&(m_GangPAIVec[2][8]==m_GangPAIVec[2][12]-1))
{
return CheckHU();
}
}*/
return false;
}
//检测是否三杠
bool CMJ::Check3Gang_HU()
{
int iSize = 0;
for(UINT i = 0 ; i < 6 ; i++ )
{
iSize = m_GangPAIVec[i].size();
}
if(iSize == 12)
{
//将牌
return CheckHU();
}
return false;
}
//检测是否混幺九
bool CMJ::CheckHY9_HU()
{
return false;
}
//检测是否七对
bool CMJ::Check7D_HU()
{
int iDoubleNum = 0 ;
for(UINT i = 0 ; i < 6 ; i++ )
{
UINT iSize = m_MyPAIVec[i].size();
if(iSize%2 ==1||iSize==0)return false;//如果是奇数肯定不是对
for(UINT j = 0 ; j < iSize-1 ; j++)
{
if(m_MyPAIVec[i][j]==m_MyPAIVec[i][j+1])
{
iDoubleNum++;
j++;
}
}
}
if(iDoubleNum==7)return true;
return false;
}
//检测是否七星不靠
bool CMJ::Check7XBK_HU()
{
bool bIs7XBK[14] ;
for(UINT i = 0 ; i < 14 ; i++ )
{
bIs7XBK[i]=false;
}
//中发白
vector<int>::iterator Iter;
if(m_MyPAIVec[0].size()!=3)return false;
for(Iter = m_MyPAIVec[0].begin();Iter != m_MyPAIVec[0].end(); Iter++ )
{
if((*Iter)==1)
{
bIs7XBK[7]=true;
}
if((*Iter)==2)
{
bIs7XBK[8]=true;
}
if((*Iter)==3)
{
bIs7XBK[9]=true;
}
}
//东南西北风
if(m_MyPAIVec[1].size()!=4)return false;
for(Iter = m_MyPAIVec[1].begin();Iter != m_MyPAIVec[1].end(); Iter++ )
{
if((*Iter)==1)
{
bIs7XBK[10]=true;
}
if((*Iter)==2)
{
bIs7XBK[11]=true;
}
if((*Iter)==3)
{
bIs7XBK[12]=true;
}
if((*Iter)==4)
{
bIs7XBK[13]=true;
}
}
//万,条,饼
for(UINT i = 2 ; i <= 4 ; i++)
{
if(m_MyPAIVec[i].size()==3)
{
if(m_MyPAIVec[i][0]==1&&m_MyPAIVec[i][1]==4&&m_MyPAIVec[i][2]==7)
{
bIs7XBK[0]=true;
bIs7XBK[3]=true;
bIs7XBK[6]=true;
}
}
else if(m_MyPAIVec[2].size()==2)
{
if(m_MyPAIVec[i][0]==2&&m_MyPAIVec[i][1]==5)
{
bIs7XBK[1]=true;
bIs7XBK[4]=true;
}
else if(m_MyPAIVec[i][0]==3&&m_MyPAIVec[i][1]==6)
{
bIs7XBK[2]=true;
bIs7XBK[5]=true;
}
}
else
{
return false;
}
}
bool t_Result = true;
for(UINT i = 0 ; i < 14 ; i++ )
{
if(bIs7XBK[i]==false)t_Result=false;
}
if(t_Result)return true;
for(UINT i = 2 ; i <= 4 ; i++)
{
if(m_MyPAIVec[i].size()==3)
{
if(m_MyPAIVec[i][0]==2&&m_MyPAIVec[i][1]==5&&m_MyPAIVec[i][2]==8)
{
bIs7XBK[0]=true;
bIs7XBK[3]=true;
bIs7XBK[6]=true;
}
}
else if(m_MyPAIVec[2].size()==2)
{
if(m_MyPAIVec[i][0]==3&&m_MyPAIVec[i][1]==6)
{
bIs7XBK[1]=true;
bIs7XBK[4]=true;
}
else if(m_MyPAIVec[i][0]==4&&m_MyPAIVec[i][1]==7)
{
bIs7XBK[2]=true;
bIs7XBK[5]=true;
}
}
else
{
return false;
}
}
t_Result = true;
for(UINT i = 0 ; i < 14 ; i++ )
{
if(bIs7XBK[i]==false)t_Result=false;
}
if(t_Result)return true;
for(UINT i = 2 ; i <= 4 ; i++)
{
if(m_MyPAIVec[i].size()==3)
{
if(m_MyPAIVec[i][0]==3&&m_MyPAIVec[i][1]==6&&m_MyPAIVec[i][2]==9)
{
bIs7XBK[0]=true;
bIs7XBK[3]=true;
bIs7XBK[6]=true;
}
}
else if(m_MyPAIVec[2].size()==2)
{
if(m_MyPAIVec[i][0]==4&&m_MyPAIVec[i][1]==7)
{
bIs7XBK[1]=true;
bIs7XBK[4]=true;
}
else if(m_MyPAIVec[i][0]==5&&m_MyPAIVec[i][1]==8)
{
bIs7XBK[2]=true;
bIs7XBK[5]=true;
}
}
else
{
return false;
}
}
t_Result = true;
for(UINT i = 0 ; i < 14 ; i++ )
{
if(bIs7XBK[i]==false)t_Result=false;
}
if(t_Result)return true;
return false;
}
//检测是否全双刻
bool CMJ::CheckQSK_HU()
{
//万,条,饼
for(UINT i = 2 ; i <= 4 ; i++)
{
int iType = i;
if(m_GangPAIVec[iType].size()==16)
{
if(m_GangPAIVec[iType][0]==2&&m_GangPAIVec[iType][4]==4&&m_GangPAIVec[iType][8]==6&&m_GangPAIVec[iType][12]==8)
{
return CheckHU();
}
}
}
return false;
}
//清一色
bool CMJ::CheckQ1S_HU()
{
if(m_MyPAIVec[0].empty()==false)return false;
if(m_MyPAIVec[1].empty()==false)return false;
if(m_ChiPAIVec[0].empty()==false)return false;
if(m_ChiPAIVec[1].empty()==false)return false;
if(m_PengPAIVec[0].empty()==false)return false;
if(m_PengPAIVec[1].empty()==false)return false;
if(m_GangPAIVec[0].empty()==false)return false;
if(m_GangPAIVec[1].empty()==false)return false;
//清万
if(m_MyPAIVec[2].empty()==false)
{
if(m_MyPAIVec[3].empty()==false)return false;
if(m_MyPAIVec[4].empty()==false)return false;
if(m_ChiPAIVec[3].empty()==false)return false;
if(m_ChiPAIVec[4].empty()==false)return false;
if(m_PengPAIVec[3].empty()==false)return false;
if(m_PengPAIVec[4].empty()==false)return false;
if(m_GangPAIVec[3].empty()==false)return false;
if(m_GangPAIVec[4].empty()==false)return false;
return CheckHU();
}
//清条
if(m_MyPAIVec[3].empty()==false)
{
if(m_MyPAIVec[2].empty()==false)return false;
if(m_MyPAIVec[4].empty()==false)return false;
if(m_ChiPAIVec[2].empty()==false)return false;
if(m_ChiPAIVec[4].empty()==false)return false;
if(m_PengPAIVec[2].empty()==false)return false;
if(m_PengPAIVec[4].empty()==false)return false;
if(m_GangPAIVec[2].empty()==false)return false;
if(m_GangPAIVec[4].empty()==false)return false;
return CheckHU();
}
//清饼
if(m_MyPAIVec[4].empty()==false)
{
if(m_MyPAIVec[2].empty()==false)return false;
if(m_MyPAIVec[3].empty()==false)return false;
if(m_ChiPAIVec[2].empty()==false)return false;
if(m_ChiPAIVec[3].empty()==false)return false;
if(m_PengPAIVec[2].empty()==false)return false;
if(m_PengPAIVec[3].empty()==false)return false;
if(m_GangPAIVec[2].empty()==false)return false;
if(m_GangPAIVec[3].empty()==false)return false;
return CheckHU();
}
return false;
}
//检测是否一色三同顺
bool CMJ::Check1S3TS_HU()
{
//万条饼
for(UINT i = 2 ; i <= 4 ; i++ )
{
int iType = i;
//吃过的顺
int iSize1 = m_ChiPAIVec[iType].size();
//剩余牌墙中的顺
int iSize2 = m_MyPAIVec[iType].size();
if(iSize1 + iSize2 >= 9)
{
//无吃的顺
if(iSize1==0)
{
if(iSize2==9)
{
//三连高压
if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8]))
{
return CheckHU();
}
return false;
}
if(iSize2==11)
{
//三连高压
if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8])&&CheckAAPai(m_MyPAIVec[iType][9],m_MyPAIVec[iType][10]))
{
return true;
}
//三连高压
if(CheckAAABBBCCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10])&&CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1]))
{
return true;
}
return false;
}
if(iSize2==12)
{
//三连高压
if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8])&&Check3Pai(m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11]))
{
return CheckHU();
}
//三连高压
if(CheckAAABBBCCCPai(m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11])&&Check3Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2]))
{
return CheckHU();
}
return false;
}
if(iSize2==14)
{
//三连顺(前)
if(CheckAAABBBCCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8])&&Check5Pai(m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11],m_MyPAIVec[iType][12],m_MyPAIVec[iType][13]))
{
return true;
}
//三连顺(中)
if(CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1])&&CheckAAABBBCCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10])&&Check3Pai(m_MyPAIVec[iType][11],m_MyPAIVec[iType][12],m_MyPAIVec[iType][13]))
{
return true;
}
//三连顺(中)
if(Check3Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2])&&CheckAAABBBCCCPai(m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11])&&CheckAAPai(m_MyPAIVec[iType][12],m_MyPAIVec[iType][13]))
{
return true;
}
//三连顺(后)
if(CheckAAABBBCCCPai(m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10],m_MyPAIVec[iType][11],m_MyPAIVec[iType][12],m_MyPAIVec[iType][13])&&Check5Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4]))
{
return true;
}
return false;
}
}
//吃到一个顺
if(iSize1==3)
{
if(iSize2==6)
{
//三连对
if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][2])
{
return CheckHU();
}
}
}
if(iSize2==8)
{
//三连对(前)
if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5])&&CheckAAPai(m_MyPAIVec[iType][6],m_MyPAIVec[iType][7]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])
{
return true;
}
}
//三连对(后)
if(CheckAABBCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7])&&CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])
{
return true;
}
}
}
if(iSize2==9)
{
//三连对(前)
if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5])&&Check3Pai(m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])
{
return CheckHU();
}
}
//三连对(后)
if(CheckAABBCCPai(m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8])&&Check3Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][5]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][7])
{
return CheckHU();
}
}
}
if(iSize2==11)
{
//三连对(前)
if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5])&&Check5Pai(m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])
{
return true;
}
}
//三连对(中)
if(CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1])&&CheckAABBCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7])&&Check3Pai(m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])
{
return true;
}
}
//三连对(中)
if(Check3Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2])&&CheckAABBCCPai(m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8])&&CheckAAPai(m_MyPAIVec[iType][9],m_MyPAIVec[iType][10]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][5]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][7])
{
return true;
}
}
//三连对(前)
if(CheckAABBCCPai(m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7],m_MyPAIVec[iType][8],m_MyPAIVec[iType][9],m_MyPAIVec[iType][10])&&Check5Pai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][5]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][7]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][9])
{
return true;
}
}
}
}
//吃到二个顺
if(iSize1==6)
{
if(iSize2==3)
{
//顺子
if(CheckABCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][2])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][2])
{
return CheckHU();
}
}
}
}
if(iSize2==5)
{
//顺子(前)
if(CheckABCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2])&&CheckAAPai(m_MyPAIVec[iType][3],m_MyPAIVec[iType][4]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][2])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][2])
{
return true;
}
}
}
//顺子(后)
if(CheckABCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4])&&CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][4])
{
return true;
}
}
}
}
if(iSize2==6)
{
//三连对
if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][5])
{
return CheckHU();
}
}
}
}
if(iSize2==8)
{
//三连对(前)
if(CheckAABBCCPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1],m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5])&&CheckAAPai(m_MyPAIVec[iType][6],m_MyPAIVec[iType][7]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][0]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][4])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][1]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][5])
{
return true;
}
}
}
//三连对(后)
if(CheckAABBCCPai(m_MyPAIVec[iType][2],m_MyPAIVec[iType][3],m_MyPAIVec[iType][4],m_MyPAIVec[iType][5],m_MyPAIVec[iType][6],m_MyPAIVec[iType][7])&&CheckAAPai(m_MyPAIVec[iType][0],m_MyPAIVec[iType][1]))
{
if(m_ChiPAIVec[iType][0]==m_MyPAIVec[iType][2]&&m_ChiPAIVec[iType][1]==m_MyPAIVec[iType][4]&&m_ChiPAIVec[iType][2]==m_MyPAIVec[iType][6])
{
if(m_ChiPAIVec[iType][3]==m_MyPAIVec[iType][3]&&m_ChiPAIVec[iType][4]==m_MyPAIVec[iType][5]&&m_ChiPAIVec[iType][5]==m_MyPAIVec[iType][7])
{
return true;
}
}
}
}
}
//吃到三个顺
if(iSize1==9)
{
if((m_ChiPAIVec[2][0]==m_ChiPAIVec[iType][3])&&(m_ChiPAIVec[iType][3]==m_ChiPAIVec[iType][6]))
{
return CheckHU();
}
}
}
}
return false;
}
//检测是否一色三节高
bool CMJ::Check1S3JG_HU()
{
//万,条,饼
for(UINT i = 2 ; i <= 4 ; i++)
{
int iType = i;
if(m_GangPAIVec[iType].size()==12)
{
if((m_GangPAIVec[iType][0]==m_GangPAIVec[iType][4]-1)&&(m_GangPAIVec[iType][4]==m_GangPAIVec[iType][8]-1))
{
return CheckHU();
}
}
}
return false;
}
//检测是否全大
bool CMJ::CheckQD_HU()
{
//剑牌,风牌
if(m_MyPAIVec[0].empty()==false)return false;
if(m_MyPAIVec[1].empty()==false)return false;
if(m_ChiPAIVec[0].empty()==false)return false;
if(m_ChiPAIVec[1].empty()==false)return false;
if(m_PengPAIVec[0].empty()==false)return false;
if(m_PengPAIVec[1].empty()==false)return false;
if(m_GangPAIVec[0].empty()==false)return false;
if(m_GangPAIVec[1].empty()==false)return false;
//万,条,饼
for(UINT i = 2 ; i <= 4 ; i++ )
{
if(m_MyPAIVec[i].empty()==false)
{
//剩余牌墙
int iSize = m_MyPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_MyPAIVec[i][j]<7)return false;
}
//吃
iSize = m_ChiPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_ChiPAIVec[i][j]<7)return false;
}
//碰
iSize = m_PengPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_PengPAIVec[i][j]<7)return false;
}
//杠
iSize = m_GangPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_GangPAIVec[i][j]<7)return false;
}
}
}
return CheckHU();
}
//检测是否全中
bool CMJ::CheckQZ_HU()
{
//剑牌,风牌
if(m_MyPAIVec[0].empty()==false)return false;
if(m_MyPAIVec[1].empty()==false)return false;
if(m_ChiPAIVec[0].empty()==false)return false;
if(m_ChiPAIVec[1].empty()==false)return false;
if(m_PengPAIVec[0].empty()==false)return false;
if(m_PengPAIVec[1].empty()==false)return false;
if(m_GangPAIVec[0].empty()==false)return false;
if(m_GangPAIVec[1].empty()==false)return false;
//万,条,饼
for(UINT i = 2 ; i <= 4 ; i++ )
{
if(m_MyPAIVec[i].empty()==false)
{
//剩余牌墙
int iSize = m_MyPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_MyPAIVec[i][j]<4)return false;
if(m_MyPAIVec[i][j]>6)return false;
}
//吃
iSize = m_ChiPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_ChiPAIVec[i][j]<4)return false;
if(m_ChiPAIVec[i][j]>6)return false;
}
//碰
iSize = m_PengPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_PengPAIVec[i][j]<4)return false;
if(m_PengPAIVec[i][j]>6)return false;
}
//杠
iSize = m_GangPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_GangPAIVec[i][j]<4)return false;
if(m_GangPAIVec[i][j]>6)return false;
}
}
}
return CheckHU();
}
//检测是否全小
bool CMJ::CheckQX_HU()
{
//剑牌,风牌
if(m_MyPAIVec[0].empty()==false)return false;
if(m_MyPAIVec[1].empty()==false)return false;
if(m_ChiPAIVec[0].empty()==false)return false;
if(m_ChiPAIVec[1].empty()==false)return false;
if(m_PengPAIVec[0].empty()==false)return false;
if(m_PengPAIVec[1].empty()==false)return false;
if(m_GangPAIVec[0].empty()==false)return false;
if(m_GangPAIVec[1].empty()==false)return false;
//万,条,饼
for(UINT i = 2 ; i <= 4 ; i++ )
{
if(m_MyPAIVec[i].empty()==false)
{
//剩余牌墙
int iSize = m_MyPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_MyPAIVec[i][j]>3)return false;
}
//吃
iSize = m_ChiPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_ChiPAIVec[i][j]>3)return false;
}
//碰
iSize = m_PengPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_PengPAIVec[i][j]>3)return false;
}
//杠
iSize = m_GangPAIVec[i].size();
for( UINT j = 0 ; j < iSize ; j++ )
{
if(m_GangPAIVec[i][j]>3)return false;
}
}
}
return CheckHU();
}
//检测是否青龙
bool CMJ::CheckQL_HU()
{
//花色
int iColorNum = 0;
//万,条,饼
for(UINT i = 2 ; i <= 4 ; i++ )
{
if(m_MyPAIVec[i].empty()==false)
{
iColorNum++;
if(m_MyPAIVec[i].size()==9)
{
for(UINT j = 0 ;j < 9 ;j++)
{
if(m_MyPAIVec[i][j] != j)return false;
}
}
}
}
if(iColorNum==1)return CheckHU();
return false;
}
//检测是否三色双龙会
bool CMJ::Check3S2LH_HU()
{
//五万为双龙
if(m_MyPAIVec[2].size()==2)
{
//双龙
if(m_MyPAIVec[2][0]==5&&m_MyPAIVec[2][1]==5)
{
//老少副
if(m_MyPAIVec[3].size()==6&&m_MyPAIVec[4].size()==6)
{
if(m_MyPAIVec[3][0]==1&&m_MyPAIVec[3][1]==2&&m_MyPAIVec[3][2]==3&&m_MyPAIVec[3][3]==7&&m_MyPAIVec[3][4]==8&&m_MyPAIVec[3][5]==9)
{
if(m_MyPAIVec[4][0]==1&&m_MyPAIVec[4][1]==2&&m_MyPAIVec[4][2]==3&&m_MyPAIVec[4][3]==7&&m_MyPAIVec[4][4]==8&&m_MyPAIVec[4][5]==9)
{
return true;
}
}
}
}
}
//五条为双龙
if(m_MyPAIVec[3].size()==2)
{
//双龙
if(m_MyPAIVec[3][0]==5&&m_MyPAIVec[3][1]==5)
{
//老少副
if(m_MyPAIVec[2].size()==6&&m_MyPAIVec[4].size()==6)
{
if(m_MyPAIVec[2][0]==1&&m_MyPAIVec[2][1]==2&&m_MyPAIVec[2][2]==3&&m_MyPAIVec[2][3]==7&&m_MyPAIVec[2][4]==8&&m_MyPAIVec[2][5]==9)
{
if(m_MyPAIVec[4][0]==1&&m_MyPAIVec[4][1]==2&&m_MyPAIVec[4][2]==3&&m_MyPAIVec[4][3]==7&&m_MyPAIVec[4][4]==8&&m_MyPAIVec[4][5]==9)
{
return true;
}
}
}
}
}
//五饼为双龙
if(m_MyPAIVec[4].size()==2)
{
//双龙
if(m_MyPAIVec[4][0]==5&&m_MyPAIVec[4][1]==5)
{
//老少副
if(m_MyPAIVec[2].size()==6&&m_MyPAIVec[3].size()==6)
{
if(m_MyPAIVec[2][0]==1&&m_MyPAIVec[2][1]==2&&m_MyPAIVec[2][2]==3&&m_MyPAIVec[2][3]==7&&m_MyPAIVec[2][4]==8&&m_MyPAIVec[2][5]==9)
{
if(m_MyPAIVec[3][0]==1&&m_MyPAIVec[3][1]==2&&m_MyPAIVec[3][2]==3&&m_MyPAIVec[3][3]==7&&m_MyPAIVec[3][4]==8&&m_MyPAIVec[3][5]==9)
{
return true;
}
}
}
}
}
return false;
}
//检测是否一色三步高
bool CMJ::Check1S3BG_HU()
{
return false;
}
//全带五
bool CMJ::CheckQD5_HU()
{
//剑牌,风牌
if(m_MyPAIVec[0].empty()==false)return false;
if(m_MyPAIVec[1].empty()==false)return false;
if(m_ChiPAIVec[0].empty()==false)return false;
if(m_ChiPAIVec[1].empty()==false)return false;
if(m_PengPAIVec[0].empty()==false)return false;
if(m_PengPAIVec[1].empty()==false)return false;
if(m_GangPAIVec[0].empty()==false)return false;
if(m_GangPAIVec[1].empty()==false)return false;
return false;
}
//三同刻
bool CMJ::Check3TK_HU()
{
/*if(m_GangPAIVec[2].size()==4)
{
//万,条,饼
for(UINT i = 3 ; i <= 4 ; i++ )
{
if(m_GangPAIVec[i].size()==4)
{
if(m_GangPAIVec[2][0]!=m_GangPAIVec[i][0])
{
return false;
}
}
}
}*/
return false;
}
//三暗刻
bool CMJ::Check3AK_HU()
{
return false;
}
//单钓将
bool CMJ::CheckDDJ_HU()
{
int count = 0;
for(UINT i = 0 ; i < 6 ; i++ )
{
count += m_MyPAIVec[i].size();
}
if(count==2)
{
if(m_MyPAIVec[m_LastPAI.m_Type].size()==2)
{
if(m_MyPAIVec[m_LastPAI.m_Type][0]==m_MyPAIVec[m_LastPAI.m_Type][1])return true;
}
}
return false;
}
//检测是否听十三幺
bool CMJ::Check13Y_TING()
{
bool i13YSize[13] ;
for(UINT i = 0 ; i < 13 ; i++ )
{
i13YSize[i]=false;
}
//中发白
vector<int>::iterator Iter;
for(Iter = m_MyPAIVec[0].begin();Iter != m_MyPAIVec[0].end(); Iter++ )
{
if((*Iter)==1)
{
i13YSize[0]=true;
}
if((*Iter)==2)
{
i13YSize[1]=true;
}
if((*Iter)==3)
{
i13YSize[2]=true;
}
}
//东南西北风
for(Iter = m_MyPAIVec[1].begin();Iter != m_MyPAIVec[1].end(); Iter++ )
{
if((*Iter)==1)
{
i13YSize[3]=true;
}
if((*Iter)==2)
{
i13YSize[4]=true;
}
if((*Iter)==3)
{
i13YSize[5]=true;
}
if((*Iter)==4)
{
i13YSize[6]=true;
}
}
//一九万
for(Iter = m_MyPAIVec[2].begin();Iter != m_MyPAIVec[2].end(); Iter++ )
{
if((*Iter)==1)
{
i13YSize[7]=true;
}
if((*Iter)==9)
{
i13YSize[8]=true;
}
}
//一九条
for(Iter = m_MyPAIVec[3].begin();Iter != m_MyPAIVec[3].end(); Iter++ )
{
if((*Iter)==1)
{
i13YSize[9]=true;
}
if((*Iter)==9)
{
i13YSize[10]=true;
}
}
//一九饼
for(Iter = m_MyPAIVec[4].begin();Iter != m_MyPAIVec[4].end(); Iter++ )
{
if((*Iter)==1)
{
i13YSize[11]=true;
}
if((*Iter)==9)
{
i13YSize[12]=true;
}
}
int icount = 0;
for(UINT i = 0 ; i < 13 ; i++ )
{
if(i13YSize[i]==true)
{
icount++;
}
}
if(icount >=12)return true;
return false;
}
//检测是否听四暗刻
bool CMJ::Check4AK_TING()
{
if(m_AKNum==4)return true;
return false;
}
//检测胡
bool CMJ::CheckHU()
{
bool t_Ok = false;
int iJiangNum = 0;
int iSize = m_MyPAIVec[0].size();
if(iSize>0)
{
//中发白
if(iSize==2)
{
if(!CheckAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==3)
{
if(!CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2]))
{
return false;
}
}
else if(iSize==5)
{
if(CheckAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1])&&CheckAAAPai(m_MyPAIVec[0][2],m_MyPAIVec[0][3],m_MyPAIVec[0][4]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4]))
{
iJiangNum++ ;
}
else
{
return false;
}
}
else if(iSize==8)
{
if(CheckAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1])&&CheckAAAPai(m_MyPAIVec[0][2],m_MyPAIVec[0][3],m_MyPAIVec[0][4])&&CheckAAAPai(m_MyPAIVec[0][5],m_MyPAIVec[0][6],m_MyPAIVec[0][7]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4])&&CheckAAAPai(m_MyPAIVec[0][5],m_MyPAIVec[0][6],m_MyPAIVec[0][7]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4],m_MyPAIVec[0][5])&&CheckAAPai(m_MyPAIVec[0][6],m_MyPAIVec[0][7]))
{
iJiangNum++ ;
}
else
{
return false;
}
}
else if(iSize==11)
{
if(CheckAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1])&&CheckAAAPai(m_MyPAIVec[0][2],m_MyPAIVec[0][3],m_MyPAIVec[0][4])&&CheckAAAPai(m_MyPAIVec[0][5],m_MyPAIVec[0][6],m_MyPAIVec[0][7])&&CheckAAAPai(m_MyPAIVec[0][8],m_MyPAIVec[0][9],m_MyPAIVec[0][10]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4])&&CheckAAAPai(m_MyPAIVec[0][5],m_MyPAIVec[0][6],m_MyPAIVec[0][7])&&CheckAAAPai(m_MyPAIVec[0][8],m_MyPAIVec[0][9],m_MyPAIVec[0][10]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4],m_MyPAIVec[0][5])&&CheckAAPai(m_MyPAIVec[0][6],m_MyPAIVec[0][7])&&CheckAAAPai(m_MyPAIVec[0][8],m_MyPAIVec[0][9],m_MyPAIVec[0][10]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[0][0],m_MyPAIVec[0][1],m_MyPAIVec[0][2])&&CheckAAAPai(m_MyPAIVec[0][3],m_MyPAIVec[0][4],m_MyPAIVec[0][5])&&CheckAAAPai(m_MyPAIVec[0][6],m_MyPAIVec[0][7],m_MyPAIVec[0][8])&&CheckAAPai(m_MyPAIVec[0][9],m_MyPAIVec[0][10]))
{
iJiangNum++ ;
}
else
{
return false;
}
}
else
{
return false;
}
}
//东南西北
iSize = m_MyPAIVec[1].size();
if(iSize>0)
{
if(iSize==2)
{
if(!CheckAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==3)
{
if(!CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2]))
{
return false;
}
}
else if(iSize==5)
{
if(CheckAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1])&&CheckAAAPai(m_MyPAIVec[1][2],m_MyPAIVec[1][3],m_MyPAIVec[1][4]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4]))
{
iJiangNum++ ;
}
else
{
return false;
}
}
else if(iSize==8)
{
if(CheckAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1])&&CheckAAAPai(m_MyPAIVec[1][2],m_MyPAIVec[1][3],m_MyPAIVec[1][4])&&CheckAAAPai(m_MyPAIVec[1][5],m_MyPAIVec[1][6],m_MyPAIVec[1][7]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4])&&CheckAAAPai(m_MyPAIVec[1][5],m_MyPAIVec[1][6],m_MyPAIVec[1][7]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4],m_MyPAIVec[1][5])&&CheckAAPai(m_MyPAIVec[1][6],m_MyPAIVec[1][7]))
{
iJiangNum++ ;
}
else
{
return false;
}
}
else if(iSize==11)
{
if(CheckAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1])&&CheckAAAPai(m_MyPAIVec[1][2],m_MyPAIVec[1][3],m_MyPAIVec[1][4])&&CheckAAAPai(m_MyPAIVec[1][5],m_MyPAIVec[1][6],m_MyPAIVec[1][7])&&CheckAAAPai(m_MyPAIVec[1][8],m_MyPAIVec[1][9],m_MyPAIVec[1][10]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4])&&CheckAAAPai(m_MyPAIVec[1][5],m_MyPAIVec[1][6],m_MyPAIVec[1][7])&&CheckAAAPai(m_MyPAIVec[1][8],m_MyPAIVec[1][9],m_MyPAIVec[1][10]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4],m_MyPAIVec[1][5])&&CheckAAPai(m_MyPAIVec[1][6],m_MyPAIVec[1][7])&&CheckAAAPai(m_MyPAIVec[1][8],m_MyPAIVec[1][9],m_MyPAIVec[1][10]))
{
iJiangNum++ ;
}
else if(CheckAAAPai(m_MyPAIVec[1][0],m_MyPAIVec[1][1],m_MyPAIVec[1][2])&&CheckAAAPai(m_MyPAIVec[1][3],m_MyPAIVec[1][4],m_MyPAIVec[1][5])&&CheckAAAPai(m_MyPAIVec[1][6],m_MyPAIVec[1][7],m_MyPAIVec[1][8])&&CheckAAPai(m_MyPAIVec[1][9],m_MyPAIVec[1][10]))
{
iJiangNum++ ;
}
else
{
return false;
}
}
else
{
return false;
}
}
//万
iSize = m_MyPAIVec[2].size();
if(iSize>0)
{
if(iSize==2)
{
if(!CheckAAPai(m_MyPAIVec[2][0],m_MyPAIVec[2][1]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==3)
{
if(!CheckAAAPai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2]))
{
if(!CheckABCPai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2]))
{
return false;
}
}
}
else if(iSize==5)
{
if(!Check5Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==6)
{
if(!Check6Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5]))
{
return false;
}
}
else if(iSize==8)
{
if(!Check8Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5],m_MyPAIVec[2][6],m_MyPAIVec[2][7]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==9)
{
if(!Check9Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5],m_MyPAIVec[2][6],m_MyPAIVec[2][7],m_MyPAIVec[2][8]))
{
return false;
}
}
else if(iSize==11)
{
if(!Check11Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5],m_MyPAIVec[2][6],m_MyPAIVec[2][7],m_MyPAIVec[2][8],m_MyPAIVec[2][9],m_MyPAIVec[2][10]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==12)
{
if(!Check12Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5],m_MyPAIVec[2][6],m_MyPAIVec[2][7],m_MyPAIVec[2][8],m_MyPAIVec[2][9],m_MyPAIVec[2][10],m_MyPAIVec[2][11]))
{
return false;
}
}
else if(iSize==14)
{
if(!Check14Pai(m_MyPAIVec[2][0],m_MyPAIVec[2][1],m_MyPAIVec[2][2],m_MyPAIVec[2][3],m_MyPAIVec[2][4],m_MyPAIVec[2][5],m_MyPAIVec[2][6],m_MyPAIVec[2][7],m_MyPAIVec[2][8],m_MyPAIVec[2][9],m_MyPAIVec[2][10],m_MyPAIVec[2][11],m_MyPAIVec[2][12],m_MyPAIVec[2][13]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else
{
return false;
}
}
//条
iSize = m_MyPAIVec[3].size();
if(iSize>0)
{
if(iSize==2)
{
if(!CheckAAPai(m_MyPAIVec[3][0],m_MyPAIVec[3][1]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==3)
{
if(!CheckAAAPai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2]))
{
if(!CheckABCPai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2]))
{
return false;
}
}
}
else if(iSize==5)
{
if(!Check5Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==6)
{
if(!Check6Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5]))
{
return false;
}
}
else if(iSize==8)
{
if(!Check8Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==9)
{
if(!Check9Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8]))
{
return false;
}
}
else if(iSize==11)
{
if(!Check11Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8],m_MyPAIVec[3][9],m_MyPAIVec[3][10]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==12)
{
if(!Check12Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8],m_MyPAIVec[3][9],m_MyPAIVec[3][10],m_MyPAIVec[3][11]))
{
return false;
}
}
else if(iSize==14)
{
if(!Check14Pai(m_MyPAIVec[3][0],m_MyPAIVec[3][1],m_MyPAIVec[3][2],m_MyPAIVec[3][3],m_MyPAIVec[3][4],m_MyPAIVec[3][5],m_MyPAIVec[3][6],m_MyPAIVec[3][7],m_MyPAIVec[3][8],m_MyPAIVec[3][9],m_MyPAIVec[3][10],m_MyPAIVec[3][11],m_MyPAIVec[3][12],m_MyPAIVec[3][13]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else
{
return false;
}
}
//饼
iSize = m_MyPAIVec[4].size();
if(iSize>0)
{
if(iSize==2)
{
if(!CheckAAPai(m_MyPAIVec[4][0],m_MyPAIVec[4][1]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==3)
{
if(!CheckAAAPai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2]))
{
if(!CheckABCPai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2]))
{
return false;
}
}
}
else if(iSize==5)
{
if(!Check5Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==6)
{
if(!Check6Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5]))
{
return false;
}
}
else if(iSize==8)
{
if(!Check8Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5],m_MyPAIVec[4][6],m_MyPAIVec[4][7]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==9)
{
if(!Check9Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5],m_MyPAIVec[4][6],m_MyPAIVec[4][7],m_MyPAIVec[4][8]))
{
return false;
}
}
else if(iSize==11)
{
if(!Check11Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5],m_MyPAIVec[4][6],m_MyPAIVec[4][7],m_MyPAIVec[4][8],m_MyPAIVec[4][9],m_MyPAIVec[4][10]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else if(iSize==12)
{
if(!Check12Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5],m_MyPAIVec[4][6],m_MyPAIVec[4][7],m_MyPAIVec[4][8],m_MyPAIVec[4][9],m_MyPAIVec[4][10],m_MyPAIVec[4][11]))
{
return false;
}
}
else if(iSize==14)
{
if(!Check14Pai(m_MyPAIVec[4][0],m_MyPAIVec[4][1],m_MyPAIVec[4][2],m_MyPAIVec[4][3],m_MyPAIVec[4][4],m_MyPAIVec[4][5],m_MyPAIVec[4][6],m_MyPAIVec[4][7],m_MyPAIVec[4][8],m_MyPAIVec[4][9],m_MyPAIVec[4][10],m_MyPAIVec[4][11],m_MyPAIVec[4][12],m_MyPAIVec[4][13]))
{
return false;
}
else
{
iJiangNum++ ;
}
}
else
{
return false;
}
}
if(iJiangNum==1)return true;
return false;
}
//检测听
bool CMJ::CheckTING()
{
//剑牌
for(UINT j = 0 ; j < 9 ;j++ )
{
//起牌
AddPai(0,j+1);
if(CheckAllPai(MJPAI_GETPAI))
{
int iPaiIndex = GetPaiIndex(0,j+1);
DelPai(iPaiIndex);
return true;
}
else
{
int iPaiIndex = GetPaiIndex(0,j+1);
DelPai(iPaiIndex);
}
}
//风牌
for(UINT j = 0 ; j < 9 ;j++ )
{
//起牌
AddPai(1,j+1);
if(CheckAllPai(MJPAI_GETPAI))
{
int iPaiIndex = GetPaiIndex(1,j+1);
DelPai(iPaiIndex);
return true;
}
else
{
int iPaiIndex = GetPaiIndex(1,j+1);
DelPai(iPaiIndex);
}
}
for(UINT i = 2 ; i < 5 ;i++ )
{
for(UINT j = 0 ; j < 9 ;j++ )
{
//起牌
AddPai(i,j+1);
if(CheckAllPai(MJPAI_GETPAI))
{
int iPaiIndex = GetPaiIndex(i,j+1);
DelPai(iPaiIndex);
return true;
}
else
{
int iPaiIndex = GetPaiIndex(i,j+1);
DelPai(iPaiIndex);
}
}
}
return false;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/rock10024/mahjong-test.git
git@gitee.com:rock10024/mahjong-test.git
rock10024
mahjong-test
mahjong-test
master

搜索帮助