https://github.com/tian11111/doudizhu
使用 C 语言实现斗地主核心规则,结合 Emscripten 编译到 WebAssembly,在浏览器中提供交互式 Web UI 体验。
https://github.com/tian11111/doudizhu
beginner-friendly c c-language-doudizhu c-poker card-game console-game dou-dizhu
Last synced: 3 months ago
JSON representation
使用 C 语言实现斗地主核心规则,结合 Emscripten 编译到 WebAssembly,在浏览器中提供交互式 Web UI 体验。
- Host: GitHub
- URL: https://github.com/tian11111/doudizhu
- Owner: tian11111
- Created: 2025-10-16T13:29:49.000Z (9 months ago)
- Default Branch: master
- Last Pushed: 2026-03-22T15:33:13.000Z (3 months ago)
- Last Synced: 2026-03-22T18:49:22.032Z (3 months ago)
- Topics: beginner-friendly, c, c-language-doudizhu, c-poker, card-game, console-game, dou-dizhu
- Language: JavaScript
- Homepage:
- Size: 974 KB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 斗地主(Fight the Landlord)
一个使用 **C 语言** 实现的简易斗地主项目,现已支持:
- **命令行版本运行**
- **Web UI 浏览器版本运行(基于 Emscripten 编译为 WebAssembly)**
项目适合作为:
- C 语言课程设计 / 小型项目练习
- 数据结构与游戏逻辑实现参考
- WebAssembly 前端交互实践
- 简单 AI 与纸牌规则系统开发示例
---
## 🎯 游戏简介
这是一个简易但完整的斗地主(Fight the Landlord)纸牌游戏实现。游戏遵循经典斗地主规则:
- 使用一副 **54 张扑克牌**(含大小王)
- 三名玩家:**一名地主,两名农民**
- 地主先出牌,农民合作对抗地主
- 谁先出完手牌即为胜利者
项目核心逻辑使用 **C 语言** 编写,最初运行于命令行终端;目前已扩展出 **Web UI 版本**,可以直接在浏览器中游玩,适合作为 C 语言学习、规则系统实现和 WebAssembly 项目实践参考。
![Uploading 屏幕截图_26-3-2026_19111_tian11111.github.io.jpg…]()
---
## 🧩 功能特性
### ✅ 标准牌型识别
支持以下合法出牌类型:
- 单张(SINGLE)
- 对子(PAIR)
- 三张(TRIPLE)
- 三带一(TRIPLE\_ONE)
- 顺子(STRAIGHT,5 张及以上连续点数)
- 炸弹(BOMB,四张相同)
- 王炸(ROCKET,大小王)
- 过牌(PASS)
### ✅ 出牌合法性校验
自动判断:
- 牌型是否合法
- 是否能够压制上一家的牌
- 王炸最大,炸弹可压制普通牌型
### ✅ 智能比较机制
根据斗地主规则进行出牌比较:
- 同类型比较点数
- 顺子要求长度一致且起始点更高
- 炸弹之间比较点数
- 王炸无敌
### ✅ 简单 AI 对手
电脑玩家采用基础策略:
- 优先尝试打出最小可压制牌
- 无法出牌时自动选择过牌
- 支持连续过牌后重置出牌权
### ✅ 完整游戏流程
支持完整流程:
**洗牌 → 发牌 → 随机定地主 → 轮流出牌 → 判断胜负**
### ✅ Web UI 支持
新增浏览器版本界面,支持:
- 网页端开始游戏
- 手牌点击选择
- 出牌 / 过牌操作
- 地主标记显示
- AI 手牌背面显示
- 中间出牌区显示
- AI 出牌与回合展示
- WebAssembly 方式运行 C 游戏逻辑
---
## 🖥️ Web UI 预览
当前 Web UI 已实现更接近斗地主游戏界面的布局,包括:
- 绿色牌桌风格界面
- 玩家 / AI 分区显示
- 手牌区与中间出牌区
- 地主身份标记
- AI 出牌展示
- 基础出牌动画与交互反馈
---
## 🛠️ 编译与运行
### 环境要求
- 支持 **C99** 或以上标准的编译器
- gcc / clang / MSVC
- Windows / Linux / macOS
### 1. 命令行版本
根据你使用的编译器进行编译,例如:
```bash
gcc 1.c -o game
./game