# 斗地主残局版 - 在线对战平台 ## 项目简介 斗地主残局版(斗残)是创造性转化自原版斗地主的在线对战游戏。 ### 特殊规则 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 ```