Update calculate_fan.py

pull/1/head
wsy182 2024-11-30 16:44:55 +08:00
parent cd74bd3eb5
commit 8ad0177ee0
1 changed files with 14 additions and 11 deletions

View File

@ -16,17 +16,15 @@ def calculate_fan(hand, melds, is_self_draw, is_cleared, conditions):
# 定义番种规则 # 定义番种规则
rules = { rules = {
"basic_win": lambda: 1 if not (conditions.get("is_seven_pairs", False) or # 基本胡:当清对或更高级规则生效时,屏蔽
conditions.get("is_big_pairs", False) or # 清对:高级规则,优先处理
conditions.get("is_dragon_seven_pairs", False) or "is_pure_cleared": lambda: 3 if is_cleared and len(melds) == 3 and not conditions.get("is_double_pure_cleared", False) else 0,
conditions.get("is_pure_cleared", False) or # 极中极:高级规则
conditions.get("is_double_pure_cleared", False)) else 0, "is_double_pure_cleared": lambda: 4 if is_cleared and len(melds) >= 2 and conditions.get("is_double_pure_cleared", False) else 0,
# 清一色:基础规则,仅在高级规则未生效时计算
"is_cleared": lambda: 2 if is_cleared and not (conditions.get("is_pure_cleared", False) or "is_cleared": lambda: 2 if is_cleared and not (conditions.get("is_pure_cleared", False) or
conditions.get("is_double_pure_cleared", False)) else 0, conditions.get("is_double_pure_cleared", False)) else 0,
"is_pure_cleared": lambda: 3 if is_cleared and len(melds) >= 1 and not conditions.get("is_double_pure_cleared",
False) else 0,
"is_double_pure_cleared": lambda: 4 if is_cleared and len(melds) >= 2 else 0,
# 极中极带两杠的清一色或清一色对子胡带杠计为4番称为“极中极”或“精品”点炮80分。
"is_seven_pairs": lambda: 2 if conditions.get("is_seven_pairs", False) and not conditions.get( "is_seven_pairs": lambda: 2 if conditions.get("is_seven_pairs", False) and not conditions.get(
"is_dragon_seven_pairs", False) else 0, "is_dragon_seven_pairs", False) else 0,
# 七对手牌由7个对子组成计为2番。 # 七对手牌由7个对子组成计为2番。
@ -43,9 +41,14 @@ def calculate_fan(hand, melds, is_self_draw, is_cleared, conditions):
"is_under_the_sea": lambda: 1 if conditions.get("is_under_the_sea", False) else 0, # 海底捞月最后一张牌被玩家摸到并胡牌计为1番。 "is_under_the_sea": lambda: 1 if conditions.get("is_under_the_sea", False) else 0, # 海底捞月最后一张牌被玩家摸到并胡牌计为1番。
"is_tian_hu": lambda: 12 if conditions.get("is_tian_hu", False) else 0, # 天胡庄家起牌后直接胡牌计为12番。 "is_tian_hu": lambda: 12 if conditions.get("is_tian_hu", False) else 0, # 天胡庄家起牌后直接胡牌计为12番。
"is_di_hu": lambda: 12 if conditions.get("is_di_hu", False) else 0, # 地胡闲家在第一轮打牌时就胡牌计为12番。 "is_di_hu": lambda: 12 if conditions.get("is_di_hu", False) else 0, # 地胡闲家在第一轮打牌时就胡牌计为12番。
# 基本胡:基础规则,仅在高级规则未生效时计算
"basic_win": lambda: 1 if not (conditions.get("is_seven_pairs", False) or
conditions.get("is_big_pairs", False) or
conditions.get("is_dragon_seven_pairs", False) or
conditions.get("is_pure_cleared", False) or
conditions.get("is_double_pure_cleared", False)) else 0,
} }
print("\nCalculating fan...")
# 逐一应用规则
# 逐一应用规则 # 逐一应用规则
for rule, func in rules.items(): for rule, func in rules.items():
result = func() result = func()