Update test_chengdu_mahjong_states.py

dev
wangsiyuan 2024-12-01 01:59:47 +08:00
parent 729f1bf7a1
commit 3d87d3850f
1 changed files with 115 additions and 0 deletions

View File

@ -366,3 +366,118 @@ def test_can_win_after_ming_gang():
# 调用 can_win 方法并断言胡牌
assert state.can_win(state.hands[0], state.melds[0], state.missing_suits), "测试失败:明杠后杠上开花应该可以胡牌"
print("测试通过:明杠后杠上开花胡牌成功!")
def test_qiang_gang_hu():
"""测试抢杠胡"""
# 玩家 A 的手牌
player_a_hand = Hand()
player_a_hand.add_tile(MahjongTile("", 2))
player_a_hand.add_tile(MahjongTile("", 3))
player_a_hand.add_tile(MahjongTile("", 5))
player_a_hand.add_tile(MahjongTile("", 6))
player_a_hand.add_tile(MahjongTile("", 7))
player_a_hand.add_tile(MahjongTile("", 9))
player_a_hand.add_tile(MahjongTile("", 9))
player_a_hand.add_tile(MahjongTile("", 1))
player_a_hand.add_tile(MahjongTile("", 1))
player_a_hand.add_tile(MahjongTile("", 2))
player_a_hand.add_tile(MahjongTile("", 2))
player_a_hand.add_tile(MahjongTile("", 3))
player_a_hand.add_tile(MahjongTile("", 3))
# 初始化游戏状态
state = ChengduMahjongState()
state.hands[0] = player_a_hand # 玩家 A 的手牌
state.missing_suits[0] = "" # 玩家 A 的缺门
# 玩家 B 的明牌和手牌
player_b_hand = Hand()
player_b_hand.add_tile(MahjongTile("", 1))
player_b_hand.add_tile(MahjongTile("", 1))
player_b_hand.add_tile(MahjongTile("", 1))
state.hands[1] = player_b_hand
state.missing_suits[1] = ""
# 玩家 B 尝试杠 1 筒
melds_b = [Meld(MahjongTile("", 1), "")]
state.melds[1] = melds_b
# 玩家 A 抢杠胡
gang_tile = MahjongTile("", 1) # 玩家 B 打出用于杠的牌
player_a_hand.add_tile(gang_tile)
can_qiang_gang_hu = state.can_win(player_a_hand, state.melds[0], state.missing_suits[0])
# 打印状态
state.print_game_state(player_index=0) # 打印玩家 A 的状态
state.print_game_state(player_index=1) # 打印玩家 B 的状态
assert can_qiang_gang_hu, "测试失败:玩家 A 应该可以抢杠胡"
print("测试通过:抢杠胡成功!")
def test_can_win_with_big_pairs():
"""测试大对子胡牌"""
hand = Hand()
# 添加对子
hand.add_tile(MahjongTile("", 1))
hand.add_tile(MahjongTile("", 1))
hand.add_tile(MahjongTile("", 2))
hand.add_tile(MahjongTile("", 2))
hand.add_tile(MahjongTile("", 3))
hand.add_tile(MahjongTile("", 3))
hand.add_tile(MahjongTile("", 4))
hand.add_tile(MahjongTile("", 4))
# 添加刻子
hand.add_tile(MahjongTile("", 5))
hand.add_tile(MahjongTile("", 5))
hand.add_tile(MahjongTile("", 5))
# 初始化游戏状态
state = ChengduMahjongState()
state.hands[0] = hand
# 设置缺门为 "条",因为手牌和明牌中没有 "条"
missing_suit = ""
# 打印当前玩家状态
state.print_game_state(player_index=0)
# 调用 can_win 方法并断言胡牌
assert state.can_win(state.hands[0], state.melds[0], missing_suit), "测试失败:大对子应该可以胡牌"
print("测试通过:大对子胡牌成功!")
def test_can_win_with_small_seven_pairs():
"""测试小七对胡牌"""
hand = Hand()
# 添加七对
hand.add_tile(MahjongTile("", 1))
hand.add_tile(MahjongTile("", 1))
hand.add_tile(MahjongTile("", 2))
hand.add_tile(MahjongTile("", 2))
hand.add_tile(MahjongTile("", 3))
hand.add_tile(MahjongTile("", 3))
hand.add_tile(MahjongTile("", 4))
hand.add_tile(MahjongTile("", 4))
hand.add_tile(MahjongTile("", 5))
hand.add_tile(MahjongTile("", 5))
hand.add_tile(MahjongTile("", 6))
hand.add_tile(MahjongTile("", 6))
hand.add_tile(MahjongTile("", 7))
hand.add_tile(MahjongTile("", 7))
# 初始化游戏状态
state = ChengduMahjongState()
state.hands[0] = hand
# 设置缺门为 "条",因为手牌和明牌中没有 "条"
missing_suit = ""
# 打印当前玩家状态
state.print_game_state(player_index=0)
# 调用 can_win 方法并断言胡牌
assert state.can_win(state.hands[0], state.melds[0], missing_suit), "测试失败:小七对应该可以胡牌"
print("测试通过:小七对胡牌成功!")