79fee6bc06a04a2c01b81ec2470a67594bceaf6e
斗地主残局版 - 在线对战平台
项目简介
斗地主残局版(斗残)是创造性转化自原版斗地主的在线对战游戏。
特殊规则
- 新增牌 - 超人强: 作为第55张牌,是最大单牌,可管一切单牌,不可组合出
- 人数灵活: 最少2人,最多10人
- 发牌规则: 每人初始5张牌,一轮结束后每人摸一张牌
- 简化牌型: 三张可成顺子,三张可成炸弹,两对可成连对
- 无地主: 不设置地主,上一轮获胜者先出牌
牌型说明
| 牌型 | 说明 |
|---|---|
| 单牌 | 任意一张牌 |
| 对子 | 两张相同点数的牌 |
| 顺子 | 三张或以上连续点数的牌(不含2和王) |
| 连对 | 两对或以上连续点数的对子(不含2和王) |
| 三带一 | 三张相同点数+任意一张 |
| 三带一对 | 三张相同点数+一对 |
| 飞机 | 两个或以上连续的三张(不含2和王) |
| 飞机带单 | 飞机+同数量单张 |
| 飞机带对 | 飞机+同数量对子 |
| 四带二 | 四张相同点数+两张单牌 |
| 四带两对 | 四张相同点数+两对 |
| 炸弹 | 三张或以上相同点数的牌 |
| 火箭 | 小王+大王 |
牌型大小
超人强 > 大王 > 小王 > 2 > A > K > Q > J > 10 > 9 > 8 > 7 > 6 > 5 > 4 > 3
炸弹可管任何非炸弹牌型,火箭最大。
技术栈
- 后端: Go 1.21
- 前端: HTML + CSS + JavaScript
- 通信: WebSocket
- 存储: Redis
- 代理: Nginx
- 部署: Docker Compose
项目结构
doudizhu-server/
├── app/ # Go后端
│ ├── cmd/main.go # 程序入口
│ ├── internal/
│ │ ├── models/ # 数据模型
│ │ ├── game/ # 游戏逻辑
│ │ ├── handlers/ # HTTP处理器
│ │ ├── redis/ # Redis客户端封装
│ │ └── ws/ # WebSocket处理
│ ├── Dockerfile
│ └── go.mod
├── nginx/
│ ├── nginx.conf # Nginx配置
│ └── html/ # 静态文件
├── compose.yaml
├── README.md
└── API.md
快速开始
部署
cd doudizhu-server
docker compose up -d --build
访问
- 本机: http://localhost
- 局域网: http://<服务器IP>
游戏流程
- 输入昵称,创建房间或输入房间号加入
- 所有玩家点击"准备"
- 游戏自动开始,每人发5张牌
- 轮流出牌或选择"不出"
- 一轮结束后每人摸一张牌
- 先出完所有手牌者获胜
开发
本地运行
# 启动Redis (Docker)
docker run -d --name redis -p 6379:6379 redis:7-alpine
# 运行后端
cd doudizhu-server/app
go mod tidy
go run ./cmd
# 另开终端启动nginx或直接访问http://localhost:8080
构建
cd doudizhu-server
docker compose build
Description
Languages
Go
65%
JavaScript
24.2%
CSS
5.5%
HTML
4.9%
Dockerfile
0.4%