一个可直接在浏览器运行的完整斗地主游戏,前端采用原生 HTML/CSS/JavaScript 开发,核心游戏规则与本地 AI 逻辑由 C 语言实现并编译为 WebAssembly,同时深度集成大模型能力,提供出牌提示、对局复盘、AI 决策等增强功能。试玩网址:https://tian11111.github.io/doudizhu/%E6%96%97%E5%9C%B0%E4%B8%BB/
- 开箱即用:纯网页单页应用,无需安装,打开浏览器即可游玩
- 高性能内核:发牌、抢地主、牌型识别、跟牌校验、胜负判定全在 C 层实现
- 多难度本地 AI:内置「简单 / 普通 / 困难」三档电脑出牌策略
- 双模式对战:支持「本地 AI」和「大模型人机 AI」两种电脑玩家模式切换
- 完整大模型能力:
- 局中实时 AI 出牌提示
- 局后自动 AI 复盘分析
- 对话式 继续追问
- 电脑玩家大模型 全程决策
- 沉浸式体验:自带高清牌面素材、全套音效(发牌/出牌/炸弹/王炸/胜负)、流畅动画
- 启动游戏 → 2. 抢地主阶段 → 3. 玩家与两名电脑轮流出牌
- 局中可随时点击「AI 提示」获取最优出牌建议
- 对局结束后,查看「AI 复盘」分析关键转折点
| 功能模块 | 说明 |
|---|---|
| 游戏状态展示 | 当前阶段(抢地主/出牌/结算)、回合信息 |
| 玩家信息面板 | 身份(地主/农民)、积分、剩余牌数 |
| 牌型交互区 | 手牌区(可点击选牌)、出牌区、结算区 |
| AI 配置面板 | 模型接口、API Key、参数设置 |
| 辅助功能 | 音效开关、显示设置、重新开始 |
index.html:主界面布局、交互逻辑、AI 调用、音效渲染game.js:Emscripten 生成的 WebAssembly 胶水代码- 原生 CSS:界面样式与动画效果
1.c:斗地主核心规则、游戏流程控制、前端调用接口导出ai_logic.c / ai_logic.h:本地 AI 出牌策略、抢地主逻辑game_shared.h:公共结构体、枚举类型、函数声明
qwen_client.c / qwen_client.h:兼容 OpenAI Chat Completions 格式的 C 端调用封装qwen_example_usage.c:对局分析、复盘请求的示例代码
牌组/:扑克牌高清图片资源(黑桃/红桃/梅花/方块/大小王)- 音效文件:
deal.mp3(发牌)、bomb.mp3(炸弹)、win.mp3(胜利)等
由于需要加载 game.wasm 文件,不可直接双击 index.html 用 file:// 协议打开,需通过本地静态服务器启动:
# 启动本地服务器,端口 8000
python -m http.server 8000浏览器访问:
http://localhost:8000
# 临时启动静态服务器(无需全局安装)
npx serve .浏览器访问终端输出的本地地址(通常是 http://localhost:3000)
页面内置可视化 AI 配置面板,支持所有兼容 OpenAI Chat Completions 格式的模型接口,配置步骤如下:
API 网址:模型接口地址(如 OpenAI 官方https://api.openai.com/v1/chat/completions)模型名称:具体模型标识(如gpt-3.5-turbo、qwen-turbo)API Key:你的接口密钥
| 功能 | 说明 |
|---|---|
| AI 提示 | 分析当前局面,给出最优出牌建议 |
| AI 复盘 | 对局结束后,分析关键失误、胜负原因 |
| 继续追问 | 基于上一轮 AI 输出,深入提问(如「为什么这步要出对子」) |
| 人机 AI 模式 | 电脑玩家由大模型规划连续出牌策略 |
注:页面已预置部分主流模型服务商示例,也支持自定义配置任意兼容接口。
- 实现 联机对战(支持多玩家实时匹配)
- 完善自动化构建脚本(统一生成
game.js与game.wasm) - 增加更多 AI 预设模板与自定义 Prompt 配置
- 开发战绩统计面板(胜率、场均得分、炸弹次数等)
- 支持对局回放功能
- 拆分前端脚本(将
index.html中的 JS 分离为独立文件,提升可维护性) - 优化移动端适配,支持触屏操作
本项目是一个 「玩法完整 + AI 能力增强」 的斗地主实验项目,适合用于:
- 浏览器棋牌小游戏开发学习
- C 语言规则引擎 + WebAssembly 前端集成实践
- 大模型辅助决策、讲解、复盘的产品原型
- 人机对战类应用快速迭代
如果你觉得项目有意思,欢迎提交 Issue 反馈问题,或通过 Pull Request 共同完善!
