牛牛的比牌规则为:
单牌比较: k>q>j>10>9>8>7>6>5>4>3>2>a。
花色比较:黑桃>红桃>梅花>方块。
牌型比较:无牛<有牛<牛牛<银牛<金牛<炸弹<五小牛。
无牛牌型比较:取其中最大的一张牌比较大小,牌大的赢,大小相同比花色。
有牛牌型比较:比牛数;牛数相同庄吃闲。
牛牛牌型比较:取其中最大的一张牌比较大小,牌大的赢,大小相同比花色。
银牛牌型比较:取其中最大的一张牌比较大小,牌大的赢,大小相同比花色。
金牛牌型比较:取其中最大的一张牌比较大小,牌大的赢,大小相同比花色。
炸弹之间大小比较:取炸弹牌比较大小。
五小牛牌型比较:庄吃闲。
五小牛>炸弹>金牛>银牛>牛牛>有牛>没牛
与之前赢三张比牌的思路一样,也是分为相同牌型和不同牌型两种情况考虑,若不同牌型则能很快的返回输赢状况,否则分别根据不同的判定规则进行相关处理。
比较单牌时我们可以通过之前排序的 compByCardsValue函数,不过注意这个函数当前者小于后者返回的是true。
--banker_Cards 庄家--other_Cards 闲家--return 庄家是否赢function cardTool.bankeriswin(banker_Cards, other_Cards)local banker_Cards_Type = cardTool.getTypebyCards(banker_Cards)local other_Cards_Type = cardTool.getTypebyCards(other_Cards)if banker_Cards_Type ~= other_Cards_Type thenreturn banker_Cards_Type>other_Cards_Typeendif banker_Cards_Type ==CardType.SMALL_NIU thenreturn trueendif banker_Cards_Type ==CardType.BOMB thenreturn banker_Cards[3].card_value > other_Cards[3].card_valueendif banker_Cards_Type ==CardType.GOLD_NIU thenreturn compByCardsValue(other_Cards[5],banker_Cards[5])endif banker_Cards_Type ==CardType.SILVER_NIU thenreturn compByCardsValue(other_Cards[5],banker_Cards[5])endif banker_Cards_Type ==CardType.NIU_NIU thenreturn compByCardsValue(other_Cards[5],banker_Cards[5])endif banker_Cards_Type ==CardType.NOT_NIU thenreturn compByCardsValue(other_Cards[5],banker_Cards[5])endreturn trueend
再写出完整测试代码:
require"cardvalue"local cardTool=require"cardtool"require"print_t"local tabletool = require "tabletool"local luabit = require"bit"local cardBuffer =cardTool.RandCardList()--[[cardBuffer[1]=2cardBuffer[2]=4+16cardBuffer[3]=6cardBuffer[4]=10+16cardBuffer[5]=12+32cardBuffer[6]=6+48cardBuffer[7]=7+16cardBuffer[8]=9cardBuffer[9]=10+32cardBuffer[10]=12+48]]local cards1={}local cards2={}for i=1,10,1 dolocal cardColor = luabit.band(cardBuffer[i] , 0xF0)/16+1local cardValue = luabit.band(cardBuffer[i] , 0x0F)local cardCount = cardTool.getCountbyValue(cardValue)local cardinfo ={card_value = cardValue,card_color = cardColor,card_count = cardCount,}if i >5 thencards2[i-5] = cardinfoelsecards1[i] = cardinfoendend--print_t(cards1)--print_t(cards2)--print_t(cardTool.getCardNamebyCards(cards1))--print_t(cardTool.getCardNamebyCards(cards2))print_t(cardTool.getCardTypeNamebyType(cardTool.getTypebyCards(cards1)))print_t(cardTool.getCardNamebyCards(cards1))print_t(cardTool.getCardTypeNamebyType(cardTool.getTypebyCards(cards2)))print_t(cardTool.getCardNamebyCards(cards2))print_t(cardTool.bankeriswin(cards1,cards2))
输出:
牛一方块1黑桃2梅花3方块5红桃K没牛黑桃4黑桃5黑桃8梅花9红桃Jtrue
ps print_t为我自己写的可以输出table类型的方法
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦