广安麻将简介
广安麻将是流行于四川广安及周边地区的一种四川麻将变体,使用万、条、筒三门花色共108张牌(不含风牌和箭牌)。其最大的特点在于强调"缺一门"、"刮风下雨"以及"查叫/查花猪"等规则,形成了独特的算牌与计分算法体系。
与成都麻将相比,广安麻将更考验玩家对三门花色之间的取舍判断,以及在缺门限定下的听牌决策和杠牌时机的把控。对于想要深入研究棋牌算法或麻将AI的开发者而言,广安麻将是一个很有价值的研究对象。
广安麻将基础规则
1. 牌山与起牌
四位玩家围坐,使用两副骰子确定庄家和起牌位置。每人起手13张牌,庄家多取一张为14张。牌墙摸完或有人胡牌时结束一局。
2. 缺一门铁律
广安麻将规定,胡牌时手中必须缺少万、条、筒中的任意一门花色。如果牌局结束时仍有三门花色则算"花猪"。
3. 碰与杠
允许碰牌(任意玩家打出时可选择碰)和杠牌(明杠/暗杠),但不允许吃牌。这一设置加大了攻防猜牌与算法断牌难度。
4. 胡牌方式
支持自摸、点炮、抢杠胡、杠上花、杠上炮、海底捞月等多种胡牌形式。每种形式的番数算法有所不同。
缺一门
杠牌必须少一门花色才能胡牌,这是广安麻将的核心算法前提。
碰杠机制
可碰不可吃,明杠称刮风,暗杠称下雨,计分算法不同。
胡牌判断算法详解
1. 标准胡牌公式
广安麻将的胡牌基本公式为:n × AAA + m × ABC + DD(n+m≥4,DD为将牌)。即一副牌中必须有若干副刻子(三张相同)和顺子(三张连续),再加一对将牌。
2. 程序判断逻辑
在算法实现上,通常采用递归回溯的方式:先取出将牌(DD),然后对剩余牌递归尝试拆分刻子和顺子。若能完全拆分则胡牌成功。
3. 七对特殊牌型
七对(7个对子)是胡牌特例,不需要满足上述公式。判断方法十分简单:统计每种牌的数量,若每种数量都能被2整除,且对子总数等于7,即为七对。
算番计分算法
广安麻将的算番是"基础番 + 额外番"的累加模型,通常设4番封顶(但部分地方规则有所不同)。计算出总番数后再按输赢来源进行分数结算。
| 番型 | 番数 | 说明 |
|---|---|---|
| 平胡 | 1番 | 基本胡牌 |
| 自摸 | +1番 | 自己摸到胡牌 |
| 清一色 | +3番 | 同一门花色胡牌 |
| 七对 | +4番 | 7个对子(不再另加自摸番) |
| 龙七对 | +5番 | 七对中含一个四张 |
| 带幺九 | +3番 | 所有牌都有1或9 |
| 将对 | +4番 | 由2、5、8组成的对对胡 |
| 杠上花 | +2番 | 杠后摸到胡牌 |
| 杠上炮 | +1番 | 杠后打出的点炮 |
| 海底捞月 | +1番 | 摸最后一张胡牌 |
| 天胡 | +6番 | 庄家起手即胡 |
| 地胡 | +5番 | 闲家第一张即胡 |
计分结算公式
总番数 = min(基础番 + 额外番, 封顶番数)。结算时:自摸→其他三家各付「总番数」对应的分;点炮→出铳者支付「总番数×2」的分。
杠牌费用单独即时结算,不参与胡牌番数汇总,体现了"刮风下雨"的即时性计分特征。
杠牌与刮风下雨算法
1. 杠的识别
广安麻将中杠分为明杠(刮风)和暗杠(下雨)。明杠是碰后再摸到同样的牌并杠出,或直接扛别人打的牌;暗杠是手中有四张相同的牌时暗地杠出。
2. 刮风计分
明杠(刮风):其他三家各付1分给杠牌者。
3. 下雨计分
暗杠(下雨):其他三家各付2分给杠牌者。
4. 杠后结果
- 杠上花:杠后摸牌即胡,额外+2番。
- 杠上炮:杠后打出的牌被别人胡,额外+1番,且杠牌收入需转付给胡牌者。
- 抢杠胡:他人明杠的那张牌可以被抢胡,此时杠牌者按点炮计费。
查叫与查花猪机制算法
1. 什么是查叫
当牌墙摸完仍无人胡牌时,系统进入查叫环节。此时需要判断每一位未胡牌玩家是否处于听牌状态。已经听牌的玩家可以让未听牌的玩家按"听牌番数"赔付。
2. 听牌判断算法
从算法角度讲,就是判断当前手牌插入任意一张牌后能否形成胡牌。常用的做法是遍历所有可能的牌(万条筒各1~9),对每个候选牌尝试胡牌检测,只要有一种补牌能胡即视为听牌。
3. 查花猪
查花猪是指在查叫时,如果发现某玩家手中仍然含有万、条、筒三种花色(即未缺门),则该玩家为"花猪",必须向其他三家各赔一个满封顶番数(通常为4番)的分数。
4. 算法实现要点
查花猪的判断非常简单:遍历手牌,看是否有三种花色即可。而查叫则需要结合胡牌判断与听牌枚举,是麻将AI系统中计算量较大的模块,建议使用缓存优化。
广安麻将算法常见问题解答
广安麻将和成都麻将的主要区别是什么?
最大的区别在于广安麻将要实行严格的"缺一门"铁律,并且没有"定缺"环节,玩家需要在牌局中自行选择舍弃哪一门。此外,广安麻将中允许杠牌引起的"刮风下雨"计分与成都麻将有所差异,整体番型相对简洁、易上手。
广安麻将有"吃牌"的算法吗?
没有。广安麻将不允许吃牌,只可碰牌和杠牌。这个设定简化了回合决策树,但在算法上需要更注重碰牌与杠牌的时机评估。
胡牌判断算法的核心流程是什么?
核心流程为:①统计手牌每种牌的数量;②检查是否满足七对(若满足直接胡);③将牌数数组;④枚举取出将牌;⑤递归拆分刻子和顺子,如果剩余牌全部分完则可胡;⑥若所有可能的将牌都尝试完仍未成功则不可胡。
广安麻将算番时怎么处理重叠番型?
番型重叠时遵循"叠加累计"原则。例如清一色与七对同时成立时,番数为清→色3番+七对4番=7番,但常见规则会限定4番封顶,因此实际按4番计算。开发系统时建议构建番型优先级表和互斥规则表来保证算番唯一性。
什么是"查叫"?如何判断有没有听牌?
查叫是牌局结束时对未胡玩家的监督机制。判断听牌的方法是:依次将万条筒中任意一张牌加入手牌,如果加入后满足胡牌条件,则该玩家确实听牌。注意:手中各门牌的缺失情况也需要纳入考虑,因为缺一门才能胡。
杠上花怎么算?算法上如何实现?
杠上花指玩家杠牌之后补到的那张牌恰好能胡,额外+2番。算法实现上,在杠牌事件发生后自动触发一次补牌操作,然后调用胡牌检测函数判断新牌是否构成胡牌,如果满足则标记为杠上花并累计番数。
开发广安麻将AI要注重哪些算法模块?
开发者应着重打造四大模块:①手牌牌型编码与快速胡牌检测;②缺门决策评估(判断舍弃哪一门最优);③听牌枚举与最佳舍牌建议;④杠牌收益模型(刮风下雨会直接影响收益)。