1
This commit is contained in:
2024-12-01 03:47:31 +08:00
parent b54b46ca11
commit 15eaaa42b6
2 changed files with 128 additions and 2 deletions

View File

@@ -69,4 +69,58 @@ def calculate_terminal_fan(hand, melds):
return 0
def is_seven_pairs(hand):
"""
判断是否符合七对番型。
七对要求:手牌由 7 个对子组成。
参数:
- hand: Hand 对象,表示玩家当前的手牌。
返回:
- int: 如果符合七对,返回 2番数否则返回 0。
"""
# 获取手牌的计数
tile_counts = hand.tile_count
# 统计对子数量
pairs_count = sum(1 for count in tile_counts.values() if count == 2)
# 检查是否有 7 个对子
if pairs_count == 7:
return 2 # 七对计为 2 番
return 0
def is_full_request(hand, melds, winning_tile):
"""
判断是否符合全求人番型。
全求人要求:
- 玩家所有牌都通过碰、杠、吃完成。
- 玩家手上只剩下 1 张牌。
- 胡牌必须通过其他玩家打出的牌。
参数:
- hand: Hand 对象,表示玩家当前的手牌。
- melds: list[Meld] 对象,表示碰、杠等明牌。
- winning_tile: MahjongTile 对象,表示胡的那张牌。
返回:
- int: 如果符合全求人,返回 6番数否则返回 0。
"""
# 检查手牌中是否只剩下 1 张牌
if len(hand.tiles) != 1:
return 0
# 检查手中剩余的这张牌是否是胡牌
if hand.tiles[0] != winning_tile:
return 0
# 检查是否有明牌(碰、杠、吃),且满足全求人条件
if not melds or not all(meld.is_triplet() or meld.is_kong() or meld.is_sequence() for meld in melds):
return 0
# 符合全求人
return 6