“补花”是麻将游戏中的一个专有术语,主要出现在有“花牌”规则的麻将玩法中(如广东麻将、台湾麻将等)。下面是详细解释:
🀄 什么是“补花”?
在某些麻将玩法中,花牌(如春夏秋冬、梅兰竹菊)是一种特殊的牌型,它不会参与普通的胡牌组合,而是作为“加分项”或“特殊标志牌”。
当玩家抓到花牌时:
🔄 要做的事情就是:补花
-
把花牌明示放到桌面上(称为“亮出”或“摆出”)。
-
再从牌墙尾部多抓一张牌补回来,维持手牌数量不变。
这个操作就叫做“补花”。
📌 举个例子
假设你抓了一张“春”牌(🌸),规则规定“春夏秋冬”是花牌:
-
你需要立刻将“春”放到你面前(公开给其他人看)。
-
然后从牌堆的尾部再抓一张新牌补回来。
-
这一整套行为就称为“补花”。
⚙️ 编程中补花的含义
从你刚才发的代码来看,ACTION_BU
对应的正是玩家在游戏中执行了补花的动作。
go
复制编辑
case pilot.ACTION_BU: if g.GetGameConfig().GetExtendBuHuaCfg().GetBuHuaMode() != bconfig.BuHuaModeManual { canPass = false }
说明:
-
系统检查当前“补花模式”是不是“手动”。
-
如果不是,就可能不允许玩家手动补花,或者需要自动触发补花流程。
🔍 花牌 vs 补花总结
名词 | 含义 |
---|---|
花牌 | 特殊的非参与组牌的牌,用于加分或标记 |
补花 | 抓到花牌时,亮出该牌并再抓一张新牌 |
如果你是在做麻将 AI 或服务器开发,可以进一步配置是否允许“自动补花”“跳过补花”“AI补花判断”等策略。需要我进一步帮你写补花判断逻辑或策略模拟吗?
// SendUserActionNotify 玩家玩的操作提示
func (g *MahTestNotify) SendUserActionNotify(param pilot.SendUserActionNotifyPara) {
if bconfig.IsOpenDDLTrainMode() {
a.MahPilotContext.ReplyStepResponse()
}
canPass := true
powerSeatId, operateSeatId, actions := param.PowerSeatId, param.OperateSeatId, param.Actions
for _, item := range param.Actions {
switch pilot.ActionType(item.ActionType) {
case pilot.ACTION_BU:
if g.GetGameConfig().GetExtendBuHuaCfg().GetBuHuaMode() != bconfig.BuHuaModeManual {
// 若不是手动补花时,不可补花
canPass = false
}
}
}
pbResponse := &mahipbtopb.MahPilotActionNotify{
PowerSeatId: int32(powerSeatId),
OperateSeatId: int32(operateSeatId),
SeatList: []int32{operateSeatId},
}
}
📌 小说明:
-
SendUserActionNotify
方法是响应用户操作(如补花)的处理逻辑; -
canPass
是判断当前操作是否合法(例如是否可以补花); -
pbResponse
构造了一个 protobuf 消息体,用于后续广播或处理。
如需补全整个方法(比如 pbResponse
如何使用、是否还有广播逻辑等),可以继续提供图片或代码上下文,我可以帮你补完。