# 21 **Repository Path**: Wcc20001226/21 ## Basic Information - **Project Name**: 21 - **Description**: 小游戏 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-11 - **Last Updated**: 2026-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 21点多人在线游戏 一个支持2-8人同桌竞技的21点纸牌游戏,使用Vue 3 + TypeScript + WebSocket实现。 ## 功能特性 - ✅ 支持2-8名玩家同时游戏 - ✅ 经典21点规则 - ✅ 轮流坐庄机制 - ✅ 下注系统(2-8注) - ✅ 实时通信(WebSocket) - ✅ 机器人玩家支持 - ✅ 响应式设计(PC/手机) - ✅ 历史记录查询 ## 技术栈 ### 前端 - Vue 3 (Composition API) - TypeScript - Vite - Pinia (状态管理) ### 后端 - Node.js - TypeScript - WebSocket (ws库) ## 项目结构 ``` ├── client/ # 前端项目 │ ├── src/ │ │ ├── components/ # Vue组件 │ │ ├── composables/ # 组合式函数 │ │ ├── stores/ # Pinia状态管理 │ │ └── assets/ # 静态资源 │ └── package.json ├── server/ # 后端项目 │ ├── src/ │ │ ├── game/ # 游戏逻辑 │ │ └── server/ # WebSocket服务器 │ └── package.json ├── shared/ # 共享代码 │ └── types/ # TypeScript类型定义 └── package.json # 根package.json ``` ## 安装与运行 ### 1. 安装依赖 ```bash npm install ``` ### 2. 启动开发服务器 ```bash # 同时启动前后端 npm run dev # 或分别启动 npm run dev:server # 后端 (端口8080) npm run dev:client # 前端 (端口5173) ``` ### 3. 访问游戏 打开浏览器访问: http://localhost:5173 ## 游戏规则 ### 基本规则 - 使用52张标准扑克牌(不含大小王) - 目标: 手牌点数尽量接近21点但不超过 - J/Q/K计10点,A可计1点或11点 ### 发牌规则 - 每人发两张底牌 - 玩家底牌仅自己可见 - 庄家第二张牌所有人可见 ### 操作 - **要牌**: 再拿一张牌 - **停牌**: 不再要牌,结束本轮 ### 庄家规则 - 点数小于17必须继续要牌 - 点数17及以上必须停牌 ### 胜负判定 - 玩家爆牌 → 输 - 庄家爆牌 → 所有未爆牌玩家赢 - 点数大者赢 - 点数相同为平局 ### 下注与赔付 - 下注范围: 2-8注 - 玩家获胜: 获得1倍下注金额 - Blackjack: 获得1.5倍下注金额 - 平局: 退回下注 ## 开发说明 ### 素材资源 扑克牌图片等素材请参考 [ASSETS_README.md](./ASSETS_README.md) ### 构建生产版本 ```bash npm run build ``` ### 类型检查 ```bash npm run typecheck ``` ## WebSocket通信协议 详见 [SPEC.md](./SPEC.md) 和 `shared/types/game.ts` ## License MIT