博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
lua——牛牛牌型处理相关算法(下)——牌型比较
阅读量:5961 次
发布时间:2019-06-19

本文共 2641 字,大约阅读时间需要 8 分钟。

牛牛的比牌规则为:

单牌比较: k>q>j>10>9>8>7>6>5>4>3>2>a。

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

 

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

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

 

[plain]   
 
  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]   
 
  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]   
 
  1. 牛一  
  2.   
  3. 方块1黑桃2梅花3方块5红桃K  
  4.   
  5. 没牛  
  6.   
  7. 黑桃4黑桃5黑桃8梅花9红桃J  
  8.   
  9. true  

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

转载地址:http://ibjax.baihongyu.com/

你可能感兴趣的文章
logstash消费阿里云kafka消息
查看>>
第四节课作业
查看>>
angularJS 限制字符串输出长度
查看>>
顺序表的实现---动态
查看>>
SCN转换
查看>>
Tomcat配置
查看>>
我的友情链接
查看>>
云客户端重在连接
查看>>
Linux和AIX下添加定时任务
查看>>
HTML+DOM与XML+DOM之间的区别与联系
查看>>
VS2012 发布网站步骤
查看>>
dubbo的服务提供者provider启动的一些理解
查看>>
Java之品优购部署_day01(2)
查看>>
[20171227]表的FULL_HASH_VALUE值的计算.txt
查看>>
[20190415]关于shared latch(共享栓锁).txt
查看>>
设计读书笔记
查看>>
有关Kali更新问题的解决方法。
查看>>
[摘录]验证视图MAC失败 Validation of ViewState MAC Failed
查看>>
[Python] numpy.random.rand
查看>>
centos时区
查看>>