棋牌游戏判断牌型算法---适合所有的棋牌游戏

转载自: https://blog.csdn.net/wojiushi3344/article/details/44851535


                     好久没更新博客了,前段时间和朋友一起开了一个公司 做APP,最后失败了。现在又开始做棋牌游戏了,最近在看网狐的源码,发现里面斗地主的基本算法太强大了,现在想想我原来的算法简直是弱爆了,分享一下 希望能对你有一点点帮助。以下主要涉及到判断牌型,牌型大小比较2块,如果你想了解更多关于棋牌游戏的东西请访问我的棋牌游戏专栏


大家写过游戏都会发现,每一种游戏牌的组成类型不一样的,比如斗地主判断牌型,和德州判断牌型就不一样,最近写德州扑克游戏发现其实所有判断牌型的算法都是一样的。

挑出牌出4张,3张,2张,1张出现的次数,然后各自组合看能出什么样的牌型,最后就能确定下来具体的牌型。下面是具体的代码实现。。。。


一.判断牌型

定义一个结构来表示每张相同牌的信息。

//分析结构


     
     
  1. structtagAnalyseResult
  2. {
  3. BYTE cbFourCount; //四张数目
  4. BYTE cbThreeCount; //三张数目
  5. BYTE cbDoubleCount; //两张数目
  6. BYTE cbSignedCount; //单张数目
  7. BYTE cbFourCardData[MAX_COUNT]; //四张克
  8. BYTE cbThreeCardData[MAX_COUNT]; //三张扑克
  9. BYTE cbDoubleCardData[MAX_COUNT]; //两张扑克
  10. BYTE cbSignedCardData[MAX_COUNT]; //单张扑克
  11. };


当我们需要判断牌型的时候,先分析牌把对应的数据存放到上面的结构体。然后根据不同牌型的规则来判断即可。主要通过下面2个函数.话不多说直接上源代码:

1.      //分析扑克(参数:1将要出牌的数据,出牌的张数,out存放分析的结构体)


     
     
  1. void CGameLogic::AnalysebCardData(constBYTE cbCardData[], BYTE cbCardCount, tagAnalyseResult & AnalyseResult)
  2. {
  3. //设置结果
  4. ZeroMemory(&AnalyseResult, sizeof(AnalyseResult));
  5. //扑克分析
  6. for(BYTE i= 0;i<cbCardCount;i++)
  7. {
  8. //变量定义
  9. BYTE cbSameCount= 1,cbCardValueTemp= 0;
  10. BYTE cbLogicValue=GetCardLogicValue(cbCardData[i]);
  11. //搜索同牌
  12. for(BYTE j=i+ 1;j<cbCardCount;j++)
  13. {
  14. //获取扑克
  15. if(GetCardLogicValue(cbCardData[j])!=cbLogicValue) break;
  16. //设置变量
  17. cbSameCount++;
  18. }
  19. //设置结果
  20. switch(cbSameCount)
  21. {
  22. case1: //单张
  23. {
  24. BYTE cbIndex=AnalyseResult.cbSignedCount++;
  25. AnalyseResult.cbSignedCardData[cbIndex*cbSameCount]=cbCardData[i];
  26. break;
  27. }
  28. case2: //两张
  29. {
  30. BYTE cbIndex=AnalyseResult.cbDoubleCount++;
  31. AnalyseResult.cbDoubleCardData[cbIndex*cbSameCount]=cbCardData[i];
  32. AnalyseResult.cbDoubleCardData[cbIndex*cbSameCount+ 1]=cbCardData[i+ 1];
  33. break;
  34. }
  35. case3: //三张
  36. {
  37. BYTE cbIndex=AnalyseResult.cbThreeCount++;
  38. AnalyseResult.cbThreeCardData[cbIndex*cbSameCount]=cbCardData[i];
  39. AnalyseResult.cbThreeCardData[cbIndex*cbSameCount+ 1]=cbCardData[i+ 1];
  40. AnalyseResult.cbThreeCardData[cbIndex*cbSameCount+ 2]=cbCardData[i+ 2];
  41. break;
  42. }
  43. case4: //四张
  44. {
  45. BYTE cbIndex=AnalyseResult.cbFourCount++;
  46. AnalyseResult.cbFourCardData[cbIndex*cbSameCount]=cbCardData[i];
  47. AnalyseResult.cbFourCardData[cbIndex*cbSameCount+ 1]=cbCardData[i+ 1];
  48. AnalyseResult.cbFourCardData[cbIndex*cbSameCount+ 2]=cbCardData[i+ 2];
  49. AnalyseResult.cbFourCardData[cbIndex*cbSameCount+ 3]=cbCardData[i+ 3];
  50. break;
  51. }
  52. }
  53. //设置索引
  54. i+=cbSameCount -1;
  55. }
  56. return;
  57. }
  58. 2.获取具体牌的类型 (实现原理就是 通过出来的张数 和相同的牌来组合牌型 看是否满足)
  59. //获取类型
  60. BYTE CGameLogic::GetCardType(const BYTE cbCardData[], BYTE cbCardCount)
  61. {
  62. //简单牌型
  63. switch(cbCardCount)
  64. {
  65. case0: //空牌
  66. {
  67. return CT_ERROR;
  68. }
  69. case1: //单牌
  70. {
  71. return CT_SINGLE;
  72. }
  73. case2: //对牌火箭
  74. {
  75. //牌型判断
  76. if((cbCardData[ 0]== 0x4F)&&(cbCardData[ 1]== 0x4E))return CT_MISSILE_CARD;
  77. if(GetCardLogicValue(cbCardData[ 0])==GetCardLogicValue(cbCardData[ 1]))return CT_DOUBLE;
  78. return CT_ERROR;
  79. }
  80. }
  81. //分析扑克
  82. tagAnalyseResult AnalyseResult;
  83. AnalysebCardData(cbCardData,cbCardCount,AnalyseResult);
  84. //四牌判断
  85. if(AnalyseResult.cbFourCount> 0)
  86. {
  87. //牌型判断
  88. if((AnalyseResult.cbFourCount== 1)&&(cbCardCount== 4))return CT_BOMB_CARD;
  89. // if((AnalyseResult.cbFourCount==1)&&(AnalyseResult.cbSignedCount==2)&&(cbCardCount==6))return CT_FOUR_LINE_TAKE_ONE;
  90. if((AnalyseResult.cbFourCount== 1)&&(AnalyseResult.cbSignedCount== 2)&&(cbCardCount== 6))return CT_FOUR_LINE_TAKE_ONE;
  91. if((AnalyseResult.cbFourCount== 1)&&(AnalyseResult.cbDoubleCount== 2)&&(cbCardCount== 8))return CT_FOUR_LINE_TAKE_TWO;
  92. return CT_ERROR;
  93. }
  94. //三牌判断
  95. if(AnalyseResult.cbThreeCount> 0)
  96. {
  97. //三条类型
  98. if(AnalyseResult.cbThreeCount== 1&& cbCardCount== 3) return CT_THREE ;
  99. //连牌判断
  100. if(AnalyseResult.cbThreeCount> 1)
  101. {
  102. //变量定义
  103. BYTE cbCardData=AnalyseResult.cbThreeCardData[ 0];
  104. BYTE cbFirstLogicValue=GetCardLogicValue(cbCardData);
  105. //错误过虑
  106. if(cbFirstLogicValue>= 15) return CT_ERROR;
  107. //连牌判断
  108. for(BYTE i= 1;i<AnalyseResult.cbThreeCount;i++)
  109. {
  110. BYTE cbCardData=AnalyseResult.cbThreeCardData[i* 3];
  111. if(cbFirstLogicValue!=(GetCardLogicValue(cbCardData)+i)) return CT_ERROR;
  112. }
  113. }
  114. //牌形判断
  115. if(AnalyseResult.cbThreeCount* 3==cbCardCount) return CT_THREE_LINE;
  116. if(AnalyseResult.cbThreeCount* 4==cbCardCount) return CT_THREE_LINE_TAKE_ONE;
  117. if((AnalyseResult.cbThreeCount* 5==cbCardCount)&&(AnalyseResult.cbDoubleCount==AnalyseResult.cbThreeCount))return CT_THREE_LINE_TAKE_TWO;
  118. return CT_ERROR;
  119. }
  120. //两张类型
  121. if(AnalyseResult.cbDoubleCount>= 3)
  122. {
  123. //变量定义
  124. BYTE cbCardData=AnalyseResult.cbDoubleCardData[ 0];
  125. BYTE cbFirstLogicValue=GetCardLogicValue(cbCardData);
  126. //错误过虑
  127. if(cbFirstLogicValue>= 15) return CT_ERROR;
  128. //连牌判断
  129. for(BYTE i= 1;i<AnalyseResult.cbDoubleCount;i++)
  130. {
  131. BYTE cbCardData=AnalyseResult.cbDoubleCardData[i* 2];
  132. if(cbFirstLogicValue!=(GetCardLogicValue(cbCardData)+i)) return CT_ERROR;
  133. }
  134. //二连判断
  135. if((AnalyseResult.cbDoubleCount* 2)==cbCardCount)return CT_DOUBLE_LINE;
  136. return CT_ERROR;
  137. }
  138. //单张判断
  139. if((AnalyseResult.cbSignedCount>= 5)&&(AnalyseResult.cbSignedCount==cbCardCount))
  140. {
  141. //变量定义
  142. BYTE cbCardData=AnalyseResult.cbSignedCardData[ 0];
  143. BYTE cbFirstLogicValue=GetCardLogicValue(cbCardData);
  144. //错误过虑
  145. if(cbFirstLogicValue>= 15) return CT_ERROR;
  146. //连牌判断
  147. for(BYTE i= 1;i<AnalyseResult.cbSignedCount;i++)
  148. {
  149. BYTE cbCardData=AnalyseResult.cbSignedCardData[i];
  150. if(cbFirstLogicValue!=(GetCardLogicValue(cbCardData)+i)) return CT_ERROR;
  151. }
  152. return CT_SINGLE_LINE;
  153. }
  154. return CT_ERROR;
  155. }


二.判断牌型大小  (其余不说,请你细细的看代码吧,如果不懂可以联系我 讨论 讨论!)

//对比扑克


     
     
  1. bool CGameLogic::CompareCard(const BYTE cbFirstCard[], const BYTE cbNextCard[], BYTE cbFirstCount, BYTE cbNextCount)
  2. {
  3. //获取类型
  4. BYTE cbNextType=GetCardType(cbNextCard,cbNextCount);
  5. BYTE cbFirstType=GetCardType(cbFirstCard,cbFirstCount);
  6. //类型判断
  7. if(cbNextType==CT_ERROR) return false;
  8. if(cbNextType==CT_MISSILE_CARD) return true;
  9. //炸弹判断
  10. if((cbFirstType!=CT_BOMB_CARD)&&(cbNextType==CT_BOMB_CARD)) return true;
  11. if((cbFirstType==CT_BOMB_CARD)&&(cbNextType!=CT_BOMB_CARD)) return false;
  12. //规则判断
  13. if((cbFirstType!=cbNextType)||(cbFirstCount!=cbNextCount))return false;
  14. //开始对比
  15. switch(cbNextType)
  16. {
  17. caseCT_SINGLE:
  18. caseCT_DOUBLE:
  19. caseCT_THREE:
  20. caseCT_SINGLE_LINE:
  21. caseCT_DOUBLE_LINE:
  22. caseCT_THREE_LINE:
  23. caseCT_BOMB_CARD:
  24. {
  25. //获取数值
  26. BYTE cbNextLogicValue=GetCardLogicValue(cbNextCard[ 0]);
  27. BYTE cbFirstLogicValue=GetCardLogicValue(cbFirstCard[ 0]);
  28. //对比扑克
  29. return cbNextLogicValue>cbFirstLogicValue;
  30. }
  31. caseCT_THREE_LINE_TAKE_ONE:
  32. caseCT_THREE_LINE_TAKE_TWO:
  33. {
  34. //分析扑克
  35. tagAnalyseResult NextResult;
  36. tagAnalyseResult FirstResult;
  37. AnalysebCardData(cbNextCard,cbNextCount,NextResult);
  38. AnalysebCardData(cbFirstCard,cbFirstCount,FirstResult);
  39. //获取数值
  40. BYTE cbNextLogicValue=GetCardLogicValue(NextResult.cbThreeCardData[ 0]);
  41. BYTE cbFirstLogicValue=GetCardLogicValue(FirstResult.cbThreeCardData[ 0]);
  42. //对比扑克
  43. return cbNextLogicValue>cbFirstLogicValue;
  44. }
  45. caseCT_FOUR_LINE_TAKE_ONE:
  46. caseCT_FOUR_LINE_TAKE_TWO:
  47. {
  48. //分析扑克
  49. tagAnalyseResult NextResult;
  50. tagAnalyseResult FirstResult;
  51. AnalysebCardData(cbNextCard,cbNextCount,NextResult);
  52. AnalysebCardData(cbFirstCard,cbFirstCount,FirstResult);
  53. //获取数值
  54. BYTE cbNextLogicValue=GetCardLogicValue(NextResult.cbFourCardData[ 0]);
  55. BYTE cbFirstLogicValue=GetCardLogicValue(FirstResult.cbFourCardData[ 0]);
  56. //对比扑克
  57. return cbNextLogicValue>cbFirstLogicValue;
  58. }
  59. }
  60. return false;
  61. }

                     好久没更新博客了,前段时间和朋友一起开了一个公司 做APP,最后失败了。现在又开始做棋牌游戏了,最近在看网狐的源码,发现里面斗地主的基本算法太强大了,现在想想我原来的算法简直是弱爆了,分享一下 希望能对你有一点点帮助。以下主要涉及到判断牌型,牌型大小比较2块,如果你想了解更多关于棋牌游戏的东西请访问我的棋牌游戏专栏


大家写过游戏都会发现,每一种游戏牌的组成类型不一样的,比如斗地主判断牌型,和德州判断牌型就不一样,最近写德州扑克游戏发现其实所有判断牌型的算法都是一样的。

挑出牌出4张,3张,2张,1张出现的次数,然后各自组合看能出什么样的牌型,最后就能确定下来具体的牌型。下面是具体的代码实现。。。。


一.判断牌型

定义一个结构来表示每张相同牌的信息。

//分析结构


  
  
  1. structtagAnalyseResult
  2. {
  3. BYTE cbFourCount; //四张数目
  4. BYTE cbThreeCount; //三张数目
  5. BYTE cbDoubleCount; //两张数目
  6. BYTE cbSignedCount; //单张数目
  7. BYTE cbFourCardData[MAX_COUNT]; //四张克
  8. BYTE cbThreeCardData[MAX_COUNT]; //三张扑克
  9. BYTE cbDoubleCardData[MAX_COUNT]; //两张扑克
  10. BYTE cbSignedCardData[MAX_COUNT]; //单张扑克
  11. };


当我们需要判断牌型的时候,先分析牌把对应的数据存放到上面的结构体。然后根据不同牌型的规则来判断即可。主要通过下面2个函数.话不多说直接上源代码:

1.      //分析扑克(参数:1将要出牌的数据,出牌的张数,out存放分析的结构体)


  
  
  1. void CGameLogic::AnalysebCardData(constBYTE cbCardData[], BYTE cbCardCount, tagAnalyseResult & AnalyseResult)
  2. {
  3. //设置结果
  4. ZeroMemory(&AnalyseResult, sizeof(AnalyseResult));
  5. //扑克分析
  6. for(BYTE i= 0;i<cbCardCount;i++)
  7. {
  8. //变量定义
  9. BYTE cbSameCount= 1,cbCardValueTemp= 0;
  10. BYTE cbLogicValue=GetCardLogicValue(cbCardData[i]);
  11. //搜索同牌
  12. for(BYTE j=i+ 1;j<cbCardCount;j++)
  13. {
  14. //获取扑克
  15. if(GetCardLogicValue(cbCardData[j])!=cbLogicValue) break;
  16. //设置变量
  17. cbSameCount++;
  18. }
  19. //设置结果
  20. switch(cbSameCount)
  21. {
  22. case1: //单张
  23. {
  24. BYTE cbIndex=AnalyseResult.cbSignedCount++;
  25. AnalyseResult.cbSignedCardData[cbIndex*cbSameCount]=cbCardData[i];
  26. break;
  27. }
  28. case2: //两张
  29. {
  30. BYTE cbIndex=AnalyseResult.cbDoubleCount++;
  31. AnalyseResult.cbDoubleCardData[cbIndex*cbSameCount]=cbCardData[i];
  32. AnalyseResult.cbDoubleCardData[cbIndex*cbSameCount+ 1]=cbCardData[i+ 1];
  33. break;
  34. }
  35. case3: //三张
  36. {
  37. BYTE cbIndex=AnalyseResult.cbThreeCount++;
  38. AnalyseResult.cbThreeCardData[cbIndex*cbSameCount]=cbCardData[i];
  39. AnalyseResult.cbThreeCardData[cbIndex*cbSameCount+ 1]=cbCardData[i+ 1];
  40. AnalyseResult.cbThreeCardData[cbIndex*cbSameCount+ 2]=cbCardData[i+ 2];
  41. break;
  42. }
  43. case4: //四张
  44. {
  45. BYTE cbIndex=AnalyseResult.cbFourCount++;
  46. AnalyseResult.cbFourCardData[cbIndex*cbSameCount]=cbCardData[i];
  47. AnalyseResult.cbFourCardData[cbIndex*cbSameCount+ 1]=cbCardData[i+ 1];
  48. AnalyseResult.cbFourCardData[cbIndex*cbSameCount+ 2]=cbCardData[i+ 2];
  49. AnalyseResult.cbFourCardData[cbIndex*cbSameCount+ 3]=cbCardData[i+ 3];
  50. break;
  51. }
  52. }
  53. //设置索引
  54. i+=cbSameCount -1;
  55. }
  56. return;
  57. }
  58. 2.获取具体牌的类型 (实现原理就是 通过出来的张数 和相同的牌来组合牌型 看是否满足)
  59. //获取类型
  60. BYTE CGameLogic::GetCardType(const BYTE cbCardData[], BYTE cbCardCount)
  61. {
  62. //简单牌型
  63. switch(cbCardCount)
  64. {
  65. case0: //空牌
  66. {
  67. return CT_ERROR;
  68. }
  69. case1: //单牌
  70. {
  71. return CT_SINGLE;
  72. }
  73. case2: //对牌火箭
  74. {
  75. //牌型判断
  76. if((cbCardData[ 0]== 0x4F)&&(cbCardData[ 1]== 0x4E))return CT_MISSILE_CARD;
  77. if(GetCardLogicValue(cbCardData[ 0])==GetCardLogicValue(cbCardData[ 1]))return CT_DOUBLE;
  78. return CT_ERROR;
  79. }
  80. }
  81. //分析扑克
  82. tagAnalyseResult AnalyseResult;
  83. AnalysebCardData(cbCardData,cbCardCount,AnalyseResult);
  84. //四牌判断
  85. if(AnalyseResult.cbFourCount> 0)
  86. {
  87. //牌型判断
  88. if((AnalyseResult.cbFourCount== 1)&&(cbCardCount== 4))return CT_BOMB_CARD;
  89. // if((AnalyseResult.cbFourCount==1)&&(AnalyseResult.cbSignedCount==2)&&(cbCardCount==6))return CT_FOUR_LINE_TAKE_ONE;
  90. if((AnalyseResult.cbFourCount== 1)&&(AnalyseResult.cbSignedCount== 2)&&(cbCardCount== 6))return CT_FOUR_LINE_TAKE_ONE;
  91. if((AnalyseResult.cbFourCount== 1)&&(AnalyseResult.cbDoubleCount== 2)&&(cbCardCount== 8))return CT_FOUR_LINE_TAKE_TWO;
  92. return CT_ERROR;
  93. }
  94. //三牌判断
  95. if(AnalyseResult.cbThreeCount> 0)
  96. {
  97. //三条类型
  98. if(AnalyseResult.cbThreeCount== 1&& cbCardCount== 3) return CT_THREE ;
  99. //连牌判断
  100. if(AnalyseResult.cbThreeCount> 1)
  101. {
  102. //变量定义
  103. BYTE cbCardData=AnalyseResult.cbThreeCardData[ 0];
  104. BYTE cbFirstLogicValue=GetCardLogicValue(cbCardData);
  105. //错误过虑
  106. if(cbFirstLogicValue>= 15) return CT_ERROR;
  107. //连牌判断
  108. for(BYTE i= 1;i<AnalyseResult.cbThreeCount;i++)
  109. {
  110. BYTE cbCardData=AnalyseResult.cbThreeCardData[i* 3];
  111. if(cbFirstLogicValue!=(GetCardLogicValue(cbCardData)+i)) return CT_ERROR;
  112. }
  113. }
  114. //牌形判断
  115. if(AnalyseResult.cbThreeCount* 3==cbCardCount) return CT_THREE_LINE;
  116. if(AnalyseResult.cbThreeCount* 4==cbCardCount) return CT_THREE_LINE_TAKE_ONE;
  117. if((AnalyseResult.cbThreeCount* 5==cbCardCount)&&(AnalyseResult.cbDoubleCount==AnalyseResult.cbThreeCount))return CT_THREE_LINE_TAKE_TWO;
  118. return CT_ERROR;
  119. }
  120. //两张类型
  121. if(AnalyseResult.cbDoubleCount>= 3)
  122. {
  123. //变量定义
  124. BYTE cbCardData=AnalyseResult.cbDoubleCardData[ 0];
  125. BYTE cbFirstLogicValue=GetCardLogicValue(cbCardData);
  126. //错误过虑
  127. if(cbFirstLogicValue>= 15) return CT_ERROR;
  128. //连牌判断
  129. for(BYTE i= 1;i<AnalyseResult.cbDoubleCount;i++)
  130. {
  131. BYTE cbCardData=AnalyseResult.cbDoubleCardData[i* 2];
  132. if(cbFirstLogicValue!=(GetCardLogicValue(cbCardData)+i)) return CT_ERROR;
  133. }
  134. //二连判断
  135. if((AnalyseResult.cbDoubleCount* 2)==cbCardCount)return CT_DOUBLE_LINE;
  136. return CT_ERROR;
  137. }
  138. //单张判断
  139. if((AnalyseResult.cbSignedCount>= 5)&&(AnalyseResult.cbSignedCount==cbCardCount))
  140. {
  141. //变量定义
  142. BYTE cbCardData=AnalyseResult.cbSignedCardData[ 0];
  143. BYTE cbFirstLogicValue=GetCardLogicValue(cbCardData);
  144. //错误过虑
  145. if(cbFirstLogicValue>= 15) return CT_ERROR;
  146. //连牌判断
  147. for(BYTE i= 1;i<AnalyseResult.cbSignedCount;i++)
  148. {
  149. BYTE cbCardData=AnalyseResult.cbSignedCardData[i];
  150. if(cbFirstLogicValue!=(GetCardLogicValue(cbCardData)+i)) return CT_ERROR;
  151. }
  152. return CT_SINGLE_LINE;
  153. }
  154. return CT_ERROR;
  155. }


二.判断牌型大小  (其余不说,请你细细的看代码吧,如果不懂可以联系我 讨论 讨论!)

//对比扑克


  
  
  1. bool CGameLogic::CompareCard(const BYTE cbFirstCard[], const BYTE cbNextCard[], BYTE cbFirstCount, BYTE cbNextCount)
  2. {
  3. //获取类型
  4. BYTE cbNextType=GetCardType(cbNextCard,cbNextCount);
  5. BYTE cbFirstType=GetCardType(cbFirstCard,cbFirstCount);
  6. //类型判断
  7. if(cbNextType==CT_ERROR) return false;
  8. if(cbNextType==CT_MISSILE_CARD) return true;
  9. //炸弹判断
  10. if((cbFirstType!=CT_BOMB_CARD)&&(cbNextType==CT_BOMB_CARD)) return true;
  11. if((cbFirstType==CT_BOMB_CARD)&&(cbNextType!=CT_BOMB_CARD)) return false;
  12. //规则判断
  13. if((cbFirstType!=cbNextType)||(cbFirstCount!=cbNextCount))return false;
  14. //开始对比
  15. switch(cbNextType)
  16. {
  17. caseCT_SINGLE:
  18. caseCT_DOUBLE:
  19. caseCT_THREE:
  20. caseCT_SINGLE_LINE:
  21. caseCT_DOUBLE_LINE:
  22. caseCT_THREE_LINE:
  23. caseCT_BOMB_CARD:
  24. {
  25. //获取数值
  26. BYTE cbNextLogicValue=GetCardLogicValue(cbNextCard[ 0]);
  27. BYTE cbFirstLogicValue=GetCardLogicValue(cbFirstCard[ 0]);
  28. //对比扑克
  29. return cbNextLogicValue>cbFirstLogicValue;
  30. }
  31. caseCT_THREE_LINE_TAKE_ONE:
  32. caseCT_THREE_LINE_TAKE_TWO:
  33. {
  34. //分析扑克
  35. tagAnalyseResult NextResult;
  36. tagAnalyseResult FirstResult;
  37. AnalysebCardData(cbNextCard,cbNextCount,NextResult);
  38. AnalysebCardData(cbFirstCard,cbFirstCount,FirstResult);
  39. //获取数值
  40. BYTE cbNextLogicValue=GetCardLogicValue(NextResult.cbThreeCardData[ 0]);
  41. BYTE cbFirstLogicValue=GetCardLogicValue(FirstResult.cbThreeCardData[ 0]);
  42. //对比扑克
  43. return cbNextLogicValue>cbFirstLogicValue;
  44. }
  45. caseCT_FOUR_LINE_TAKE_ONE:
  46. caseCT_FOUR_LINE_TAKE_TWO:
  47. {
  48. //分析扑克
  49. tagAnalyseResult NextResult;
  50. tagAnalyseResult FirstResult;
  51. AnalysebCardData(cbNextCard,cbNextCount,NextResult);
  52. AnalysebCardData(cbFirstCard,cbFirstCount,FirstResult);
  53. //获取数值
  54. BYTE cbNextLogicValue=GetCardLogicValue(NextResult.cbFourCardData[ 0]);
  55. BYTE cbFirstLogicValue=GetCardLogicValue(FirstResult.cbFourCardData[ 0]);
  56. //对比扑克
  57. return cbNextLogicValue>cbFirstLogicValue;
  58. }
  59. }
  60. return false;
  61. }

猜你喜欢

转载自blog.csdn.net/cui6864520fei000/article/details/88080991