boardgame-phaser/packages/regicide-game
hypercross bf20e53c6b feat: regicide card game 2026-04-06 14:21:44 +08:00
..
public feat: regicide card game 2026-04-06 14:21:44 +08:00
src/game feat: regicide card game 2026-04-06 14:21:44 +08:00
README.md feat: regicide card game 2026-04-06 14:21:44 +08:00
index.html feat: regicide card game 2026-04-06 14:21:44 +08:00
package.json feat: regicide card game 2026-04-06 14:21:44 +08:00
tsconfig.json feat: regicide card game 2026-04-06 14:21:44 +08:00
tsconfig.node.json feat: regicide card game 2026-04-06 14:21:44 +08:00
vite.config.ts feat: regicide card game 2026-04-06 14:21:44 +08:00
vitest.config.ts feat: regicide card game 2026-04-06 14:21:44 +08:00

README.md

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张小丑牌获胜

运行游戏

# 安装依赖
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 <cardId> - 打出单张卡牌
  • combo <cardIds> - 打出组合牌
  • yield - 放弃回合
  • counterattack <cardIds> - 反击时弃牌
  • useJester - 使用小丑牌重抽

状态管理

游戏状态使用 MutableSignal 响应式系统,通过 game.produce() 进行不可变更新。

场景系统

GameScene 继承自 GameHostScene使用 spawnEffecteffect() 实现响应式渲染。

许可证

MIT