1. 牌型识别: 新增三带一对、飞机、飞机带单/带对、四带二、四带两对 2. 获胜显示: 先显示最后出牌1秒后再弹出获胜对话框 3. 出牌区布局: 横向排列并换行 4. 移动端重连: 切回前台时自动重连WebSocket 5. 更新文档: README.md和API.md补充新增牌型
114 lines
2.8 KiB
Markdown
114 lines
2.8 KiB
Markdown
# 斗地主残局版 - 在线对战平台
|
||
|
||
## 项目简介
|
||
|
||
斗地主残局版(斗残)是创造性转化自原版斗地主的在线对战游戏。
|
||
|
||
### 特殊规则
|
||
|
||
1. **新增牌 - 超人强**: 作为第55张牌,是最大单牌,可管一切单牌,不可组合出
|
||
2. **人数灵活**: 最少2人,最多10人
|
||
3. **发牌规则**: 每人初始5张牌,一轮结束后每人摸一张牌
|
||
4. **简化牌型**: 三张可成顺子,三张可成炸弹,两对可成连对
|
||
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
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 部署
|
||
|
||
```bash
|
||
cd doudizhu-server
|
||
docker compose up -d --build
|
||
```
|
||
|
||
### 访问
|
||
|
||
- 本机: http://localhost
|
||
- 局域网: http://<服务器IP>
|
||
|
||
### 游戏流程
|
||
|
||
1. 输入昵称,创建房间或输入房间号加入
|
||
2. 所有玩家点击"准备"
|
||
3. 游戏自动开始,每人发5张牌
|
||
4. 轮流出牌或选择"不出"
|
||
5. 一轮结束后每人摸一张牌
|
||
6. 先出完所有手牌者获胜
|
||
|
||
## 开发
|
||
|
||
### 本地运行
|
||
|
||
```bash
|
||
# 启动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
|
||
```
|
||
|
||
### 构建
|
||
|
||
```bash
|
||
cd doudizhu-server
|
||
docker compose build
|
||
```
|