Files
doucan/README.md
wtz 97e03acbe2 fix: 修复牌型识别、获胜显示、出牌区布局、移动端重连
1. 牌型识别: 新增三带一对、飞机、飞机带单/带对、四带二、四带两对
2. 获胜显示: 先显示最后出牌1秒后再弹出获胜对话框
3. 出牌区布局: 横向排列并换行
4. 移动端重连: 切回前台时自动重连WebSocket
5. 更新文档: README.md和API.md补充新增牌型
2026-02-22 10:00:13 +08:00

2.8 KiB
Raw Permalink Blame History

斗地主残局版 - 在线对战平台

项目简介

斗地主残局版(斗残)是创造性转化自原版斗地主的在线对战游戏。

特殊规则

  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

快速开始

部署

cd doudizhu-server
docker compose up -d --build

访问

游戏流程

  1. 输入昵称,创建房间或输入房间号加入
  2. 所有玩家点击"准备"
  3. 游戏自动开始每人发5张牌
  4. 轮流出牌或选择"不出"
  5. 一轮结束后每人摸一张牌
  6. 先出完所有手牌者获胜

开发

本地运行

# 启动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