规则引擎
先把游戏规则做硬:发牌、盲注、下注轮、all-in、摊牌和分池都由 Python 引擎统一处理,界面不替规则兜底。
Game AI System
一个能真实对局的德州扑克 Heads-up 系统:规则引擎管牌局,AI 在不完全信息里做下注决策。
德州扑克好玩的地方在于:你永远看不全牌,却必须做一个像样的决定。这个项目把这件事拆成两层: 底层是一套不讲情面的规则引擎,负责每一手牌的合法流程;上层是一套可训练的 AI 策略, 在牌力、位置、赔率和对手行为之间做取舍。
下面是实际运行界面:模式选择、实时牌桌、玩家行动按钮、公共牌和行动日志都已经跑通。 对一个扑克 AI 来说,最基本的诚意是牌局真的能打完。



我把“能玩起来”和“会做决策”分开处理:先让规则闭环可靠,再把可调策略接到同一个行动接口。 这样 AI 可以换,牌桌不会跟着散架。
先把游戏规则做硬:发牌、盲注、下注轮、all-in、摊牌和分池都由 Python 引擎统一处理,界面不替规则兜底。
AI 不是看见大牌就冲。它会综合胜率、位置、底池赔率、SPR 和 fold equity,再选择 fold / call / raise / all-in。
玩家不会总按教科书出牌。系统记录 VPIP、PFR、AF、fold-to-cbet 等指标,用行为反推对手范围。
CMA-ES 负责离线调参,自博弈结果保存为 JSON;Web 和 CLI 只加载冠军参数,不把训练压力带进对局。
每次轮到 AI 行动,引擎会打包可用动作、底池、下注额、位置、公共牌和对手快照。 AI 只负责在约束内做选择,不能凭空发明一个“不合规但很聪明”的动作。
规则引擎生成牌局状态
整理底池、位置、可用动作
估算胜率并选择行动
把结果反馈到牌桌界面
已补充模式选择、牌桌对局和翻牌阶段截图
核心引擎:engine.py 处理发牌、下注轮、all-in、摊牌和分池
AI 策略:advanced_ai.py 根据胜率、位置、SPR、pot odds 和 fold equity 选择 fold / call / raise / all-in
训练流程:train.py 使用 CMA-ES 和 self-play opponent pool 训练参数
Web 入口:server.py 用 Flask session 包装同步游戏引擎,static/ 提供中英文牌桌界面
当前展示方式:用截图证明可交互版本已经跑通,在线试玩后续再上服务器
本地启动后可以直接在浏览器里进行玩家 vs AI 对局,适合复现一手牌的完整流程。
cd C:\homework\poker_github_repo
.\.venv\Scripts\activate
python server.py
# 训练 AI 参数
python train.py --generations 5 --lambda 6 --hands 800 --workers 4