基于 52 张标准扑克牌的多人在线港式五张梭哈(Show Hand)网页游戏,适配桌面端与手机横竖屏。房间内按游戏阶段分配一屏空间:游戏中展示牌桌,摊牌比大小和结算时展示紧凑结果,主操作始终可见。支持自建服务器部署、房间码开黑与电脑陪练。
- 基本规则:52 张标准扑克,无大小王。每人最终获得 5 张牌(1 张暗牌 + 4 张明牌)。
- 四轮发牌与下注:
- 第 1 轮:1 暗牌 + 1 明牌 → 第 1 轮下注
- 第 2 轮:第 2 张明牌 → 第 2 轮下注
- 第 3 轮:第 3 张明牌 → 第 3 轮下注
- 第 4 轮:第 4 张明牌 → 第 4 轮下注
- 摊牌 Showdown:比 5 张完整手牌
- 话事权(先行动):每轮发完明牌后,由当前公开牌面最强者先行动。前三轮 4 张及以内牌面不计顺子和同花。若同级牌面按花色 ♠ > ♥ > ♦ > ♣ 决定行动顺序。
- 梭哈与有效上限(Cap 规则):开局以参局玩家中筹码最少者的筹码量作为本局最大有效投入上限,整局单一底池,不设边池。
- 摊牌不分花色:最终摊牌时花色完全平等,点数牌型完全同级时平分底池。
本项目采用 npm workspaces 组织:
packages/core:纯 TypeScript 实现的扑克牌模型、牌型评估引擎(明牌比大小 + 摊牌比大小)以及纯函数状态机。100% 单元测试覆盖。packages/server:Node.js + Express + Socket.IO 服务端,包含房间管理、暗牌视口脱敏(playerView)、15s 思考倒计时、断线 30s 托管及 AI 陪练。packages/client:React 18 + Vite + Tailwind CSS + Lucide 图标 + Web Audio 原生音效引擎。支持移动端触控偷瞄底牌与响应式牌桌。
npm installnpm test前端牌面布局检查会启动真实浏览器,需要本机已安装 Chrome;也可运行 npx playwright install chrome 安装。单独运行布局检查:
npm run test:layout -w @soha/client启动前端 Vite 开发服务器(端口 3000)与后端 Socket 服务(端口 3001):
# 同时启动前后端开发服务
npm run dev同一局域网内的其他设备打开 http://<运行游戏的电脑的局域网IP>:3000,例如 http://192.168.1.23:3000。两台设备须连接同一 Wi-Fi,且路由器不能开启客户端隔离。macOS 可在「系统设置 → 网络」查看电脑的 IP 地址;首次弹出防火墙提示时,允许 Node.js 接受传入连接。
# 构建所有子包(前端静态资源将打包并由后端统一托管)
npm run build
# 启动单体服务器(默认端口 3001)
npm run start -w @soha/server同一局域网内的设备打开 http://<运行游戏的电脑的局域网IP>:3001 即可开始多人对战。分享房间链接时,也请使用这个局域网 IP,不要使用 localhost;localhost 在手机上指的是手机自己。