练功 · 非游戏 —— 以掼蛋为载体,锤炼工程能力与 AI 策略的练功房。
项目代号:GuandanMaster | 双副牌、四人、浏览器直接运行。
掼蛋是起源于中国安徽淮安的扑克游戏,使用两副牌(108张),四人两两组队进行对抗。
本项目不是面向最终用户的游戏产品,而是一个持续迭代的练功项目:从零构建完整的规则引擎、AI 策略系统、界面交互,边练边学。
纯前端应用,无需安装任何依赖。直接用浏览器打开 game/index.html 即可。
# 就这么简单
start game/index.html # Windows
open game/index.html # macOS
xdg-open game/index.html # Linux本项目的所有操作均可通过键盘完成:
| 键 | 操作 |
|---|---|
← → ↑ ↓ |
在卡牌间移动焦点 |
Space |
选中 / 取消焦点牌 |
Enter |
出牌 |
P |
过牌 |
S |
理牌 / 拆开 (开关) |
H |
Advisor 出牌建议(开关) |
Q |
翻看其他玩家的手牌(开关) |
D |
复制调试信息到剪贴板,同时保存到 localStorage |
L |
加载最近一次保存的牌局(复盘) |
/ |
查看快捷键列表 |
操作流程示例:
← →选牌 →Space选中 →Enter出牌,或P过牌。
- 双副牌掼蛋规则完整实现:炸弹、同花顺、火箭、钢板(三连对)、三带二、顺子、逢人配(万能牌)
- 四人对战,2v2 组队,自动计分与升级
- 残局检测、接风逻辑
- 牌型检测:单张、对子、三同张、三带二、顺子、同花顺、炸弹、三连对、钢板
- 逢人配(万能牌)在每种牌型中的填补逻辑
- 炸弹等级比较、出牌合法性验证
- 高级到低级:
canBeat→compareBombs→ 同型比较
- 三级难度:新手 / 进阶 / 高手,各有独立决策链路
- 残局策略体系:
- 对手 1-2 张 → 封堵(出更大张数组合)
- 对手 3-4 张 → 3+2 / 三同张 / 对子(不出单张)
- 对手 5+ 张 → 多张组合清牌
- 对手 4-6 张且牌权在手 → 该炸就炸
- 逢人配使用惩罚(浪费万能牌重罚 +50)
- 记牌逻辑与手牌质量评估
- 队友配合:送牌、封堵、接风
- 实时分析手牌与局面,提供 Top 2 建议
- 多维度评分体系:
- 牌池记忆:死点、花色、大王跟踪
- 位置意识:队友/对手、送牌/压牌
- 残局优化:一手出完、送队友、压对手
- 炸弹策略:炸链节约、后续检查、逢人配豁免
- 多步规划:孤张评分、不拆牌型
- 过牌建议:scorePass 评分,含队友放行提示
- 调试:D 键导出评分明细,L 键加载存档复盘
- 键盘全操控:方向键选牌、空格确认、Enter 出牌
- 出牌动画(旋转+缩放+模糊入场)
- 回合高亮、奖杯系统
- Web Audio API 音效合成
- 增量渲染(仅新出牌播放动画)
- 理牌功能、自动过牌、翻看底牌
GuandanMaster/
├── game/
│ ├── index.html # 主页面
│ ├── style.css # 样式
│ ├── ui-controller.js # 界面控制、键盘交互、渲染
│ ├── game-engine.js # 掼蛋规则引擎
│ ├── advisor.js # Advisor 智能出牌建议
│ └── ai-player.js # AI 玩家决策逻辑
├── README.md
├── LICENSE
└── .gitignore
index.html
├── style.css (样式)
├── game-engine.js (规则引擎 → 一切的基础)
│ └── advisor.js (建议系统 → 基于引擎分析手牌)
├── ai-player.js (AI 决策 → 基于引擎出牌)
└── ui-controller.js (界面控制 → 绑定引擎 + 键盘 + 渲染)
- 纯浏览器端 — 无框架、无构建工具、零依赖
- HTML5 + CSS3 + ES6 JavaScript
- Web Audio API(音效合成)
- CSS 动画(关键帧 + cubic-bezier)
- localStorage(牌局保存与复盘)
本项目的核心理念是以练代学:
| 练功维度 | 对应模块 | 练习内容 |
|---|---|---|
| 规则系统设计 | game-engine.js |
牌型检测算法、万能牌填补、比较排序 |
| AI 策略 | ai-player.js |
决策树、评分函数、局面评估 |
| 建议系统 | advisor.js |
多维度评分、权重调优、理由生成 |
| UI/UX | ui-controller.js + style.css |
增量渲染、动画、键盘导航、音效 |
| 工程实践 | 整体 | 代码组织、模块划分、调试工具、版本管理 |
- 掼蛋规则参考自《掼蛋竞赛规则》
- AI 策略受掼蛋社区经验与博弈论启发