最近自走棋类游戏非常风靡,从DOTA2的自走棋到LOL的云顶之弈
玩家在享受游戏快乐的同时,也被搜不来牌所烦恼,当然这也是麻将元素带来乐趣的所在
分析搜牌算法:
1、有一个牌库1¥棋子13个比如一共有30个就是13*30;加上2¥棋子3¥4¥5¥棋子,总个数=13*30+14*25+15*20+12*15+6*10=1280(个)
(以上数据与棋子个数均为猜测估算,目的为分析算法内容,数据来源不真实)
2、在这个牌库中,每回合从牌库中抽取牌,而抽取牌需要根据当前棋手等级对应一定的搜索概率,例如:6级时----》1¥棋子概率:30%,2¥棋子概率:40%,3¥棋子概率:20%,4¥棋子概率:8%,5¥棋子概率:2%
此时1¥棋子:13*30*30% =117 ,2¥棋子:14*25*40%=140,3¥棋子:15*20*20%=60,4¥棋子:12*15*8%=14.4,5¥棋子:6*10*8%=4.8,从而得出各个棋子所占权重。
3、减去玩家手中的牌数,假如一玩家手中有一个三星男枪,那么要从卡牌库所有男枪牌数中减去该玩家场上其他玩家以及待合成区和搜牌区中的男枪数,相当于做了三个减法
4、从剩余牌数中按照分子除以总数做分母的情况,从而计算出刷新出的牌的各种情况,结果出现五次(五张待选牌)
5、每回合所有玩家刷新牌是从第一家到最后一家依次刷新,每一次要遍历一下卡牌库和玩家的手中牌以及待选区中牌,并不是所有玩家同时生成,只是遍历时间很短玩家体会不到而已;例如共享英雄阶段,棋子是一个一个刷出而不是一下子全部显示出来,这并不是单纯的为了效果好看