目录
麻将的基本概念
麻将牌的构成
麻将的碰,杠,吃,听,胡
麻将胡牌条件
胡牌算法简介
选将拆分法
算法数据结构
构建数据结构
数据结构使用
牌花色的获取
获取某一花色的牌值
获取某一张牌相邻牌
算法代码实现
基础代码校验
选将代码实现
每种花色胡判定
花色胡判定缓存
万条筒花色胡判定逻辑
字牌花色胡判定逻辑
最终代码
总结

麻将的基本概念
麻将牌的构成
麻将牌是由下面的牌组成:
1.万字牌:1-9共9张(每个数字各一张)比如1万2万3万等
2.条子牌:1-9共9张(每个数字各一张) 比如1条,2条,3条等
3.筒子牌:1-9共9张(每个数字各一张) 比如1筒,2筒,3筒等
4.字牌:东南西北风各4张,红中、发财、白板各4张。
由基本牌组合而成的 万,条,筒的牌的数目为 4* 9 * 3 = 108 由字牌组成的牌的数量为 4 * 7 = 28
所以整副牌就由136张牌组成。花牌(春夏秋冬)等不计算。
麻将的碰,杠,吃,听,胡
碰、杠、吃是麻将游戏中常用的三种操作,以便于玩家将手中的牌进行组合,以尽可能地增加胡牌的机会。具体意义如下:
碰:当玩家手中有两张相同的牌,而桌上已有一张相同的牌时,玩家可以选择碰此牌,即将自己手中的两张相同的牌与桌上的一张相同的牌组成一个刻子。
杠:当玩家手中有一张牌,而桌上已有三张相同的牌时,玩家可以选择杠此牌,即将自己手中的一张牌与桌上的三张相同的牌组成一个杠。这里面杠有多种,在算法中一定要注意处理。 具体分类如下:
弯杠:当自己手中有两张牌,别人打出一张牌自己进行了碰操作,然后自己又摸到了一张牌,形成了杠
明杠:自己手中有3张牌,别人打出一张牌,形成的杠
暗杠: 自己摸到了4张一样的牌为暗杠
吃:当桌上有玩家打出一张牌后,其他玩家如果手中有两张数字连着的牌,就可以选择吃此牌,即将桌上的牌和手中的牌组合成一个顺子。
听:听牌是麻将游戏中的一个术语,指的是在某一时刻,手牌中的牌差一张即可和牌,当前的手牌一定是 3n+1张。
胡:在麻将游戏中,“胡”指的是牌手通过组成某些牌型,使结束时所剩余的牌组满足胡牌规则,从而赢得游戏的过程。
麻将胡牌条件
麻将想要胡牌,必须得满足一个条件就是 3n + 2
3 指的是由3张牌组成的面子( 顺子或者是刻子)
n 是指由n个(大于等于0)组成的面子
2 指的就是由2张牌组成的将,这个将是必不可少的,面子可以不存在,但是将必须得存在,也就是说 n可以为0,但是2必须存在。如下图所示:

举个例子,当手牌为14张时 正好满足3n +2 3x4 + 2 = 14 。表示由4组面子和一对将组成的手牌。再举个例子当手牌为 1万1万1万 5万5万 也是满足3n+2,也可以满足胡牌的条件。
胡牌算法简介
胡牌算法实现起来有多种多样,但是大致分为两种,一种是使用回溯算法,一种是查表法。
查表法是利用事先生成好的所有的胡牌牌型,然后将这些牌型加载到内存中,直接在内存中对比即可,效率非常快,缺点只不灵活,需要事先按规则生成好表。
我们现在介绍的这种算法也是用到了回溯算法,我们称之为 “选将
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/126208.html