parent
ff15ecb1a1
commit
5f22c0b6eb
|
|
@ -104,6 +104,9 @@ class ChengduMahjongEngine:
|
|||
def check_game_over(self):
|
||||
"""
|
||||
检查游戏是否结束。
|
||||
游戏结束条件:
|
||||
1. 牌堆已空。
|
||||
2. 赢的玩家数量 >= 3。
|
||||
"""
|
||||
# 检查是否已无牌可摸
|
||||
if self.state.remaining_tiles == 0:
|
||||
|
|
@ -111,8 +114,14 @@ class ChengduMahjongEngine:
|
|||
logger.info("游戏结束:牌堆已空")
|
||||
return
|
||||
|
||||
# 检查是否满足血战结束条件
|
||||
check_blood_battle(self)
|
||||
# 检查是否满足血战结束条件:赢家数量 >= 3
|
||||
if len(self.state.winners) >= 3:
|
||||
self.game_over = True
|
||||
logger.info(f"游戏结束:赢家数量达到 {len(self.state.winners)} 人")
|
||||
return
|
||||
|
||||
# 如果没有触发结束条件,继续游戏
|
||||
logger.info(f"当前赢家数量: {len(self.state.winners)},游戏继续")
|
||||
|
||||
def run(self):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -117,7 +117,7 @@ class ChengduMahjongState:
|
|||
# **第一步:检查花色限制**
|
||||
suits = {tile.suit for tile in hand.tiles}
|
||||
if len(suits) > 2:
|
||||
logger.info("花色超过两种,不能胡牌")
|
||||
# logger.info("花色超过两种,不能胡牌")
|
||||
return False # 花色超过两种,不能胡牌
|
||||
|
||||
# 检查是否打完缺门的花色
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
from src.engine.chengdu_mahjong_engine import ChengduMahjongEngine
|
||||
from loguru import logger
|
||||
|
||||
def test_mahjong_engine():
|
||||
"""
|
||||
|
|
@ -15,24 +15,32 @@ def test_mahjong_engine():
|
|||
engine.deal_tiles()
|
||||
|
||||
# 检查发牌后的状态
|
||||
print(f"庄家: 玩家 {engine.state.current_player}")
|
||||
logger.info(f"庄家: 玩家 {engine.state.current_player}")
|
||||
for player in range(4):
|
||||
hand = engine.state.hands[player]
|
||||
print(f"玩家 {player} 的手牌: {hand}")
|
||||
print(f"玩家 {player} 的缺门: {engine.state.missing_suits[player]}")
|
||||
logger.info(f"玩家 {player} 的手牌: {hand}")
|
||||
logger.info(f"玩家 {player} 的缺门: {engine.state.missing_suits[player]}")
|
||||
|
||||
# 模拟游戏主循环
|
||||
try:
|
||||
engine.run()
|
||||
except Exception as e:
|
||||
print(f"运行时出错: {e}")
|
||||
logger.error(f"测试引擎时出错: {e}")
|
||||
|
||||
# 打印游戏结束后的状态
|
||||
print("\n游戏结束!")
|
||||
logger.info("游戏结束!")
|
||||
for player in range(4):
|
||||
print(f"玩家 {player} 的分数: {engine.state.scores[player]}")
|
||||
print(f"玩家 {player} 的明牌: {engine.state.melds[player]}")
|
||||
print(f"赢家: {engine.state.winners}")
|
||||
logger.info(f"玩家 {player} 的分数: {engine.state.scores[player]}")
|
||||
logger.info(f"玩家 {player} 的明牌: {engine.state.melds[player]}")
|
||||
logger.info(f"玩家 {player} 的手牌: {engine.state.hands[player]}")
|
||||
logger.info(f"玩家 {player} 的缺门: {engine.state.missing_suits[player]}")
|
||||
|
||||
# 记录赢家信息
|
||||
if engine.state.winners:
|
||||
logger.info(f"赢家: {engine.state.winners}")
|
||||
else:
|
||||
logger.info("没有赢家!")
|
||||
|
||||
|
||||
# 运行测试
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
Loading…
Reference in New Issue