• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

lua——牛牛牌型处理相关算法(下)——牌型比较

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

牛牛的比牌规则为:

单牌比较: k>q>j>10>9>8>7>6>5>4>3>2>a。
花色比较:黑桃>红桃>梅花>方块。
牌型比较:无牛<有牛<牛牛<银牛<金牛<炸弹<五小牛。

无牛牌型比较:取其中最大的一张牌比较大小,牌大的赢,大小相同比花色。
有牛牌型比较:比牛数;牛数相同庄吃闲。
牛牛牌型比较:取其中最大的一张牌比较大小,牌大的赢,大小相同比花色。
银牛牌型比较:取其中最大的一张牌比较大小,牌大的赢,大小相同比花色。
金牛牌型比较:取其中最大的一张牌比较大小,牌大的赢,大小相同比花色。
炸弹之间大小比较:取炸弹牌比较大小。
五小牛牌型比较:庄吃闲。
五小牛>炸弹>金牛>银牛>牛牛>有牛>没牛

 

与之前赢三张比牌的思路一样,也是分为相同牌型和不同牌型两种情况考虑,若不同牌型则能很快的返回输赢状况,否则分别根据不同的判定规则进行相关处理。

比较单牌时我们可以通过之前排序的 compByCardsValue函数,不过注意这个函数当前者小于后者返回的是true。

 

[plain] view plain copy
 
  1. --banker_Cards  庄家  
  2. --other_Cards  闲家  
  3. --return 庄家是否赢  
  4. function cardTool.bankeriswin(banker_Cards, other_Cards)  
  5.     local banker_Cards_Type = cardTool.getTypebyCards(banker_Cards)  
  6.     local other_Cards_Type = cardTool.getTypebyCards(other_Cards)  
  7.   
  8.   
  9.     if banker_Cards_Type ~= other_Cards_Type then  
  10.         return banker_Cards_Type>other_Cards_Type  
  11.     end  
  12.   
  13.     if banker_Cards_Type ==CardType.SMALL_NIU then  
  14.         return true  
  15.     end  
  16.   
  17.     if banker_Cards_Type ==CardType.BOMB then  
  18.         return banker_Cards[3].card_value > other_Cards[3].card_value  
  19.     end  
  20.   
  21.     if banker_Cards_Type ==CardType.GOLD_NIU then  
  22.         return compByCardsValue(other_Cards[5],banker_Cards[5])  
  23.     end  
  24.     if banker_Cards_Type ==CardType.SILVER_NIU then  
  25.         return compByCardsValue(other_Cards[5],banker_Cards[5])  
  26.     end  
  27.     if banker_Cards_Type ==CardType.NIU_NIU then  
  28.         return compByCardsValue(other_Cards[5],banker_Cards[5])  
  29.     end  
  30.     if banker_Cards_Type ==CardType.NOT_NIU then  
  31.         return compByCardsValue(other_Cards[5],banker_Cards[5])  
  32.     end  
  33.   
  34.     return true  
  35. end  


再写出完整测试代码:

 

[plain] view plain copy
 
  1. require"cardvalue"  
  2. local cardTool=require"cardtool"  
  3. require"print_t"  
  4. local tabletool = require "tabletool"  
  5.   
  6. local luabit = require"bit"  
  7.   
  8.   
  9.   
  10.   
  11.   
  12. local cardBuffer =cardTool.RandCardList()  
  13.   
  14. --[[  
  15. cardBuffer[1]=2  
  16. cardBuffer[2]=4+16  
  17. cardBuffer[3]=6  
  18. cardBuffer[4]=10+16  
  19. cardBuffer[5]=12+32  
  20.   
  21. cardBuffer[6]=6+48  
  22. cardBuffer[7]=7+16  
  23. cardBuffer[8]=9  
  24. cardBuffer[9]=10+32  
  25. cardBuffer[10]=12+48  
  26. ]]  
  27.   
  28. local cards1={}  
  29. local cards2={}  
  30.   
  31. for i=1,10,1 do  
  32.     local cardColor = luabit.band(cardBuffer[i] , 0xF0)/16+1  
  33.     local cardValue = luabit.band(cardBuffer[i] , 0x0F)  
  34.     local cardCount = cardTool.getCountbyValue(cardValue)  
  35.   
  36.     local cardinfo =  
  37.     {  
  38.         card_value = cardValue,  
  39.         card_color = cardColor,  
  40.         card_count = cardCount,  
  41.     }  
  42.     if i >5 then  
  43.         cards2[i-5] = cardinfo  
  44.     else  
  45.         cards1[i] = cardinfo  
  46.     end  
  47.   
  48.   
  49. end  
  50.   
  51. --print_t(cards1)  
  52. --print_t(cards2)  
  53.   
  54. --print_t(cardTool.getCardNamebyCards(cards1))  
  55. --print_t(cardTool.getCardNamebyCards(cards2))  
  56.   
  57.   
  58.   
  59.   
  60.   
  61. print_t(cardTool.getCardTypeNamebyType(cardTool.getTypebyCards(cards1)))  
  62. print_t(cardTool.getCardNamebyCards(cards1))  
  63.   
  64. print_t(cardTool.getCardTypeNamebyType(cardTool.getTypebyCards(cards2)))  
  65. print_t(cardTool.getCardNamebyCards(cards2))  
  66.   
  67.   
  68.   
  69. print_t(cardTool.bankeriswin(cards1,cards2))  


输出:

 

[plain] view plain copy
 
  1. 牛一  
  2.   
  3. 方块1黑桃2梅花3方块5红桃K  
  4.   
  5. 没牛  
  6.   
  7. 黑桃4黑桃5黑桃8梅花9红桃J  
  8.   
  9. true  



ps    print_t为我自己写的可以输出table类型的方法 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
lua学习知识点笔记发布时间:2022-07-22
下一篇:
lua语言介绍发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap