广安麻将算法

深度拆解广安麻将其中的胡牌判断、番数计算、杠牌刮风下雨、查叫查花猪等核心算法逻辑,让玩家与开发者都能看懂。

🎯 广安本地规则

广安麻将简介

广安麻将算法整体流程示意图

广安麻将是流行于四川广安及周边地区的一种四川麻将变体,使用万、条、筒三门花色共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. 杠后结果

重要提示:杠牌算法在系统中是"即时结算"的,不属于胡牌后的统一算番范畴,开发麻将系统时需要单独处理杠牌事件消息队列。

查叫与查花猪机制算法

广安麻将查叫查花猪算法示意

1. 什么是查叫

当牌墙摸完仍无人胡牌时,系统进入查叫环节。此时需要判断每一位未胡牌玩家是否处于听牌状态。已经听牌的玩家可以让未听牌的玩家按"听牌番数"赔付。

2. 听牌判断算法

从算法角度讲,就是判断当前手牌插入任意一张牌后能否形成胡牌。常用的做法是遍历所有可能的牌(万条筒各1~9),对每个候选牌尝试胡牌检测,只要有一种补牌能胡即视为听牌。

3. 查花猪

查花猪是指在查叫时,如果发现某玩家手中仍然含有万、条、筒三种花色(即未缺门),则该玩家为"花猪",必须向其他三家各赔一个满封顶番数(通常为4番)的分数。

4. 算法实现要点

查花猪的判断非常简单:遍历手牌,看是否有三种花色即可。而查叫则需要结合胡牌判断与听牌枚举,是麻将AI系统中计算量较大的模块,建议使用缓存优化。

广安麻将算法常见问题解答

广安麻将和成都麻将的主要区别是什么?

最大的区别在于广安麻将要实行严格的"缺一门"铁律,并且没有"定缺"环节,玩家需要在牌局中自行选择舍弃哪一门。此外,广安麻将中允许杠牌引起的"刮风下雨"计分与成都麻将有所差异,整体番型相对简洁、易上手。

广安麻将有"吃牌"的算法吗?

没有。广安麻将不允许吃牌,只可碰牌和杠牌。这个设定简化了回合决策树,但在算法上需要更注重碰牌与杠牌的时机评估。

胡牌判断算法的核心流程是什么?

核心流程为:①统计手牌每种牌的数量;②检查是否满足七对(若满足直接胡);③将牌数数组;④枚举取出将牌;⑤递归拆分刻子和顺子,如果剩余牌全部分完则可胡;⑥若所有可能的将牌都尝试完仍未成功则不可胡。

广安麻将算番时怎么处理重叠番型?

番型重叠时遵循"叠加累计"原则。例如清一色与七对同时成立时,番数为清→色3番+七对4番=7番,但常见规则会限定4番封顶,因此实际按4番计算。开发系统时建议构建番型优先级表和互斥规则表来保证算番唯一性。

什么是"查叫"?如何判断有没有听牌?

查叫是牌局结束时对未胡玩家的监督机制。判断听牌的方法是:依次将万条筒中任意一张牌加入手牌,如果加入后满足胡牌条件,则该玩家确实听牌。注意:手中各门牌的缺失情况也需要纳入考虑,因为缺一门才能胡。

杠上花怎么算?算法上如何实现?

杠上花指玩家杠牌之后补到的那张牌恰好能胡,额外+2番。算法实现上,在杠牌事件发生后自动触发一次补牌操作,然后调用胡牌检测函数判断新牌是否构成胡牌,如果满足则标记为杠上花并累计番数。

开发广安麻将AI要注重哪些算法模块?

开发者应着重打造四大模块:①手牌牌型编码与快速胡牌检测;②缺门决策评估(判断舍弃哪一门最优);③听牌枚举与最佳舍牌建议;④杠牌收益模型(刮风下雨会直接影响收益)。