1.先说说,数值的构成。

类型字 0:东南西北中发白 --》1,2,3,4,5,6,7

类型万 1:1万2万3万4万5万6万7万8万9万--》11,12,13,14,15,16,17,18,19

类型条 2:1条2条3条4条5条6条7条8条9条--》21,22,23,24,25,26,27,28,29

类型饼 3:1饼2饼3饼4饼5饼6饼7饼8饼9饼--》31,32,33,34,35,36,37,38,39

如果我知道一个数字,26。

马上就知道是对应类型26/10 = 2,就是属于“条”。26%10=6,就能得出是6条。

如果要匹配到相应的图片的话,中间的26,就是代表你要的是6条。还有声音文件的话,也可如此。

除数结果为类型,取余为第几个。

 

2.洗牌。

std::vector<int> mPaiValueVector;  //装所有牌的容器

1,2,3,4,5,6,7

11,12,13,14,15,16,17,18,19

21,22,23,24,25,26,27,28,29

31,32,33,34,35,36,37,38,39

把上面的数据放到 mPaiValueVector 中,循环4次。(共 34 * 4 = 136 张牌)

//再用这个来打乱上面容器里面所有数值的顺序

//当然是越乱越好

random_shuffle(mPaiValueVector.begin(), mPaiValueVector.end());

 

3.发牌。

每次发牌都从mPaiValueVector的末尾发一张,先发13张。

(A为庄南,B东,C北,D西)

玩家A : 4, 13, 23, 5, 14, 22, 22, 14, 38, 17, 28, 5, 37  + 19 

玩家B : 14, 3, 13, 15, 24, 12, 2, 24, 18, 17, 28, 15, 17 

玩家C : 24, 23, 3, 25, 34, 32, 12, 3, 7, 17, 28, 25, 27 

玩家D : 34, 33, 13, 35, 4, 4, 32, 34, 28, 17, 28, 35, 7 

 

发牌后,按从小到的数据排序。

玩家A : 4, 5,5,13, 14, 14, 17, 19 ,22, 22, 23, 28, 37, 38 

 

结果你就能看到字,万,条,饼的先后出现,且是从1到9的顺序。

字不足5个,就打字先,把4打出去。

 

4.碰。

玩家B中比较下,没有两个4,玩家C中,也没有。

D中找到两个4,那玩家D,就能碰。(当然B,C中没有人胡牌)。

 

5.杠。

和碰类似,只不过先有3只一样的,后面要补张牌好像。

 

6.胡牌。

清一色:14个的数值分别除以10,结果全为一样的。

小7对:14个数据中,有7对是一样的。有碰有胡,除外(有3个一样的数据,有4个一样的数据就除外)。

平胡:3连+3连+3连+3连+1对。 (连在一起的3个数据或者碰到的1对,有类似4对,再上1对的数据)。

天胡:

地胡:

杠上开花:

烂胡:

........

类推,还有什么胡法(我也不太懂)。

总体上,按上面排序的数值处理,会简单很多的。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信