三国杀专业分析面板,立志成为桌游界的stockfish

三国杀专业分析面板 (SGSFish)

GitHub仓库:
本项目是一个基于 Python 实现的三国杀专业分析面板,旨在模拟玩家决策过程,通过量化评估动作实体(卡牌/技能)的价值、考虑它们之间的相互影响(包括基于作用域的条件影响)、根据战局动态调整策略权重,并结合概率模型估计对手手牌,以提供当前回合最佳行动序列(包含具体作用域选择)及其预期得分。

核心概念

本项目基于以下核心逻辑构建:

  1. 属性系统:

    • 动作实体 (ActionEntity): 定义了基础的攻击、防御、辅助属性值。
    • 武将: 每个武将拥有基础血量上限。
  2. 动作实体 (ActionEntity):

    • 合并了原有的卡牌和技能概念,代表一个可执行的动作。
    • 包含基础属性 (攻击、防御、辅助)。
    • 状态属性:
      • timing: 发动时机 (如 0=出牌阶段, 2=判定阶段)。
      • response_suit, response_rank_range: 响应特定花色/数字的要求 (如【闪电】响应黑桃2-9)。
      • scope: 可选的作用域列表 (如【过河拆桥】可选 [1, 2, 3] 代表手牌区、装备区、判定区)。
  3. 影响系统:

    • 某些动作实体在使用后,可能会对其后使用的特定动作实体产生临时的属性修正。
    • 例如,“过河拆桥”作用于手牌区(scope=1)时,可能会提升后续“杀”的攻击评估价值。
    • 影响现在可以指定 required_scope,即该影响只有在源动作选择了特定作用域时才生效。
    • 这些影响关系、修正值和作用域要求存储在数据库中。
  4. 动态权重:

    • AI 的决策倾向会根据战场局势动态调整:
      • 敌方血量越低,攻击属性的权重越高,鼓励进攻。
      • 己方血量越低,防御属性的权重越高,鼓励保守或自保。
    • 辅助属性的权重当前版本是固定的。
  5. 概率模型:

    • 通过记录牌堆的初始构成、己方手牌以及(理论上)场上已出现的牌,结合对手当前的手牌数量,来估算对手手牌中持有各种动作实体的可能性(概率)。
    • 当前实现为简化模型&

你可能感兴趣的:(三国杀,算法)