Skip to content
MyCodeBattlePublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

19 Commits

Folders and files

Repository files navigation

52 张港式五张梭哈 (Show Hand Poker)

基于 52 张标准扑克牌的多人在线港式五张梭哈(Show Hand)网页游戏,适配桌面端与手机横竖屏。房间内按游戏阶段分配一屏空间:游戏中展示牌桌,摊牌比大小和结算时展示紧凑结果,主操作始终可见。支持自建服务器部署、房间码开黑与电脑陪练。

核心玩法规则(完整遵循 30 条房规)

  1. 基本规则:52 张标准扑克,无大小王。每人最终获得 5 张牌(1 张暗牌 + 4 张明牌)。
  2. 四轮发牌与下注:
    • 第 1 轮:1 暗牌 + 1 明牌 → 第 1 轮下注
    • 第 2 轮:第 2 张明牌 → 第 2 轮下注
    • 第 3 轮:第 3 张明牌 → 第 3 轮下注
    • 第 4 轮:第 4 张明牌 → 第 4 轮下注
    • 摊牌 Showdown:比 5 张完整手牌
  3. 话事权(先行动):每轮发完明牌后,由当前公开牌面最强者先行动。前三轮 4 张及以内牌面不计顺子和同花。若同级牌面按花色 ♠ > ♥ > ♦ > ♣ 决定行动顺序。
  4. 梭哈与有效上限(Cap 规则):开局以参局玩家中筹码最少者的筹码量作为本局最大有效投入上限,整局单一底池,不设边池。
  5. 摊牌不分花色:最终摊牌时花色完全平等,点数牌型完全同级时平分底池。

项目架构

本项目采用 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 原生音效引擎。支持移动端触控偷瞄底牌与响应式牌桌。

快速开始

1. 安装依赖

npm install

2. 运行自动化测试

npm test

前端牌面布局检查会启动真实浏览器,需要本机已安装 Chrome;也可运行 npx playwright install chrome 安装。单独运行布局检查:

npm run test:layout -w @soha/client

3. 开发模式

启动前端 Vite 开发服务器(端口 3000)与后端 Socket 服务(端口 3001):

# 同时启动前后端开发服务
npm run dev

同一局域网内的其他设备打开 http://<运行游戏的电脑的局域网IP>:3000,例如 http://192.168.1.23:3000。两台设备须连接同一 Wi-Fi,且路由器不能开启客户端隔离。macOS 可在「系统设置 → 网络」查看电脑的 IP 地址;首次弹出防火墙提示时,允许 Node.js 接受传入连接。

4. 生产环境构建与启动(适合服务器部署)

# 构建所有子包(前端静态资源将打包并由后端统一托管)
npm run build

# 启动单体服务器(默认端口 3001)
npm run start -w @soha/server

同一局域网内的设备打开 http://<运行游戏的电脑的局域网IP>:3001 即可开始多人对战。分享房间链接时,也请使用这个局域网 IP,不要使用 localhost;localhost 在手机上指的是手机自己。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages