# Regicide - 单人卡牌游戏 基于 Phaser 3 + boardgame-core 框架实现的 Regicide 合作卡牌游戏单人模式。 ## 游戏简介 Regicide 是一款合作奇幻卡牌游戏,使用标准扑克牌进行游戏。玩家需要击败12个强大的敌人(4个J、4个Q、4个K)来取得胜利。 ## 游戏规则 ### 目标 按任意顺序击败城堡牌堆中的所有12个敌人(J/Q/K)。 ### 设置 - **城堡牌堆**: 12张敌人卡(4J、4Q、4K) - **酒馆牌堆**: 所有数字牌(2-10)和A - **初始手牌**: 8张 - **小丑牌**: 2张(用于重抽手牌) ### 敌人属性 | 敌人 | HP | 反击伤害 | 分值 | |------|----|----------|------| | J | 20 | 10 | 10 | | Q | 30 | 15 | 15 | | K | 40 | 20 | 20 | ### 花色效果 - **红桃 ♥**: 从弃牌堆回收卡牌到酒馆牌堆 - **方片 ♦**: 抽取等量卡牌 - **梅花 ♣**: 攻击力翻倍 - **黑桃 ♠**: 减免反击伤害 ### 游戏流程 1. **出牌阶段**: 打出一张或多张同点数的牌(总点数≤10) 2. **伤害结算**: 对敌人造成等同于牌面点数的伤害 3. **反击阶段**: 如果敌人未被击败,它会反击 4. **抵消反击**: 弃置点数总和≥反击伤害的牌 ### 特殊规则 - **敌人免疫**: 每个敌人免疫与其花色相同的卡牌效果 - **组合牌**: 可打出多张同点数牌,但总点数不能超过10 - **小丑牌**: 可弃光手牌并重新抽取8张(整局限用2次) ### 胜利等级 - 🥇 **金胜利**: 未使用小丑牌获胜 - 🥈 **银胜利**: 使用1张小丑牌获胜 - 🥉 **铜胜利**: 使用2张小丑牌获胜 ## 运行游戏 ```bash # 安装依赖 pnpm install # 启动开发服务器 cd packages/regicide-game pnpm dev # 构建生产版本 pnpm build # 预览生产版本 pnpm preview ``` ## 项目结构 ``` packages/regicide-game/ ├── src/ │ ├── game/ │ │ ├── types.ts # 类型定义 │ │ ├── card-utils.ts # 卡牌工具函数 │ │ └── regicide.ts # 游戏逻辑和命令 │ ├── scenes/ │ │ ├── GameScene.ts # 主游戏场景 │ │ └── effects.ts # 特效系统 │ └── ui/ │ └── App.tsx # Preact UI组件 ├── index.html ├── package.json └── vite.config.ts ``` ## 技术栈 - **Phaser 3**: 游戏引擎 - **boardgame-core**: 状态管理(Preact Signals + Mutative) - **boardgame-phaser**: Phaser 集成框架 - **Preact**: UI 组件 - **TypeScript**: 类型安全 - **Vite**: 构建工具 - **Tailwind CSS**: UI 样式 ## 开发说明 ### 命令系统 游戏使用 boardgame-core 的命令系统: - `setup` - 初始化游戏 - `play ` - 打出单张卡牌 - `combo ` - 打出组合牌 - `yield` - 放弃回合 - `counterattack ` - 反击时弃牌 - `useJester` - 使用小丑牌重抽 ### 状态管理 游戏状态使用 MutableSignal 响应式系统,通过 `game.produce()` 进行不可变更新。 ### 场景系统 GameScene 继承自 GameHostScene,使用 `spawnEffect` 和 `effect()` 实现响应式渲染。 ## 许可证 MIT