//对比单只扑克 bool CGameLogic::CompareOnlyOne(BYTE bFirstCard, BYTE bLastCard) { BYTE bFirstVolae=GetCardValoe(bFirstCard); BYTE bLastVolae=GetCardValoe(bLastCard); if (bFirstVolae==bLastVolae) return bFirstCard>bLastCard; return bFirstVolae>bLastVolae; }
//对比单只扑克 bool CShowHandCard::CompareOnlyOne(BYTE bFirstCard, BYTE bLastCard) { BYTE bFirstVolae=GetCardValoe(bFirstCard); BYTE bLastVolae=GetCardValoe(bLastCard); if (bFirstVolae==bLastVolae) return bFirstCard>bLastCard; return bFirstVolae>bLastVolae; }
//对比对子 bool CGameLogic::CompareDuiZhi(BYTE bFirstList[], BYTE bLastList[], BYTE bCardCount) { BYTE bDoubleCard[2][4]; if (FindDoubleCard(bFirstList,bCardCount,bDoubleCard[0])!=1) return false; if (FindDoubleCard(bLastList,bCardCount,bDoubleCard[1])!=1) return true; BYTE bFirstVoloe=GetCardValoe(bDoubleCard[0][0]); BYTE bLastVoloe=GetCardValoe(bDoubleCard[1][0]); if (bFirstVoloe==bLastVoloe) return (GetHuaKind(bDoubleCard[0][0])==HEI_TAO); return bFirstVoloe>bLastVoloe; }
//对比同花 bool CGameLogic::CompareTongHua(BYTE bFirstList[], BYTE bLastList[]) { BYTE bFirst=0,bLast=0; for (BYTE i=0;i<5;i++) { bFirst=GetCardValoe(bFirstList[i]); bLast=GetCardValoe(bLastList[i]); if (bFirst!=bLast) return (bFirst>bLast); } return GetHuaKind(bFirstList[0])>GetHuaKind(bLastList[0]); }
//是否对子 bool CGameLogic::IsDuiZhi(BYTE bCardList[], BYTE bCardCount) { if (bCardCount<2) return false; BYTE bDoubleCount=0; for (BYTE i=0;i<bCardCount-1;i++) { if (GetCardValoe(bCardList[i])==GetCardValoe(bCardList[i+1])) return true; } return false; }
//是否三条 bool CGameLogic::IsSanTiao(BYTE bCardList[], BYTE bCardCount) { if (bCardCount<3) return false; BYTE bBaseVoloe=GetCardValoe(bCardList[2]),bBaseCount=0; for (BYTE i=0;i<bCardCount;i++) { if (GetCardValoe(bCardList[i])==bBaseVoloe) bBaseCount++; } return (bBaseCount==3); }
//是否铁支 bool CGameLogic::IsTieZhi(BYTE bCardList[], BYTE bCardCount) { if (bCardCount<4) return false; BYTE bBaseVoloe=GetCardValoe(bCardList[1]),bNoFixCount=0; for (BYTE i=0;i<bCardCount;i++) { if (GetCardValoe(bCardList[i])!=bBaseVoloe) bNoFixCount++; if ((bCardCount-bNoFixCount)<4) return false; } return true; }
//是否顺子 bool CGameLogic::IsShunZhi(BYTE bCardList[], BYTE bCardCount) { if (bCardCount!=5) return false; BYTE bBaseHua=GetHuaKind(bCardList[0]); BYTE bFirstCardVoloe=GetCardValoe(bCardList[0]); for (BYTE i=1;i<bCardCount;i++) { if (bFirstCardVoloe!=(GetCardValoe(bCardList[i])+i)) return false; } return true; }
//是否葫芦 bool CGameLogic::IsHuLu(BYTE bCardList[], BYTE bCardCount) { if (bCardCount!=5) return false; BYTE bFirstVoloe=GetCardValoe(bCardList[0]); BYTE bMidVoloe=GetCardValoe(bCardList[2]); BYTE bLastVoloe=GetCardValoe(bCardList[4]); if (GetCardValoe(bCardList[1])!=bFirstVoloe) return false; if (GetCardValoe(bCardList[3])!=bLastVoloe) return false; if ((bMidVoloe!=bFirstVoloe)&&(bMidVoloe!=bLastVoloe)) return false; return true; }
//查找对牌 BYTE CGameLogic::FindDoubleCard(BYTE bCardList[], BYTE bCardCount, BYTE * bOutDoubleCard) { BYTE bDoubleCount=0; if (bCardCount<2) return 0; for (BYTE i=0;i<bCardCount-1;i++) { if (GetCardValoe(bCardList[i])==GetCardValoe(bCardList[i+1])) { *(bOutDoubleCard+bDoubleCount*2)=bCardList[i]; *(bOutDoubleCard+bDoubleCount*2+1)=bCardList[i+1]; bDoubleCount++; i++; } } return bDoubleCount; }
//是否两对 bool CGameLogic::IsLiangDui(BYTE bCardList[], BYTE bCardCount) { if (bCardCount<4) return FALSE; BYTE bDoubleCount=0; for (BYTE i=0;i<bCardCount-1;i++) { if (GetCardValoe(bCardList[i])==GetCardValoe(bCardList[i+1])) { i++; bDoubleCount++; if (bDoubleCount==2) return true; } } return false; }