Update test_chengdu_mahjong_states.py
parent
729f1bf7a1
commit
3d87d3850f
|
|
@ -366,3 +366,118 @@ def test_can_win_after_ming_gang():
|
||||||
# 调用 can_win 方法并断言胡牌
|
# 调用 can_win 方法并断言胡牌
|
||||||
assert state.can_win(state.hands[0], state.melds[0], state.missing_suits), "测试失败:明杠后杠上开花应该可以胡牌"
|
assert state.can_win(state.hands[0], state.melds[0], state.missing_suits), "测试失败:明杠后杠上开花应该可以胡牌"
|
||||||
print("测试通过:明杠后杠上开花胡牌成功!")
|
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("测试通过:小七对胡牌成功!")
|
||||||
Loading…
Reference in New Issue