一款结合了肉鸽(Roguelike)构筑要素的拼词游戏。玩家通过购买字母、组合单词来获取分数,利用饰品(Trinkets)产生化学反应,突破关卡目标。
- 备选区 (Shop): 随机刷新字母。
- 购买费用: 3金币/个。
- 刷新费用: 1金币/次。
- 刷新概率: 元音 (Vowels) 选取几率是辅音 (Consonants) 的2倍。
- 拼写区 (Grid): 玩家拖动字母到此处组成单词。
- 结算 (Score):
- 基础分: 字母分值求和。
- 倍率/加成: 由饰品 (Trinkets) 和特殊词盘格子提供。
- 循环: 拼词 -> 结算 -> 获得金币/分数 -> 下一关/失败。
为了方便迁移到 Uni-app 和扩展,我们采用 ES6 Modules 模式,分离数据与视图。
/
├── index.html # 入口文件
├── css/
│ ├── style.css # 核心样式 (柔和风格)
│ └── animations.css # 动效
├── js/
│ ├── main.js # 游戏主入口 (Controller)
│ ├── config.js # 游戏配置 (常量、概率、价格)
│ ├── core/
│ │ ├── GameState.js # 全局状态管理 (分数、金币、关卡)
│ │ ├── ShopSystem.js # 商店逻辑 (随机生成、购买)
│ │ └── GridSystem.js # 拼词盘逻辑 (放置、验证)
│ ├── ui/
│ │ ├── Renderer.js # 负责更新 DOM
│ │ └── DragManager.js # 负责处理拖拽交互
│ └── utils/
│ ├── Dictionary.js # 词库检查 (API预留)
│ └── MathHelpers.js # 随机数、概率计算
在 GameState 中预留 permanentTraits 数组,用于存储游戏开始前加载的被动效果。
GridSystem 将接受 BoardConfig 对象:
{
id: "classic_wood",
size: [8, 8],
specialSlots: [{x: 2, y: 2, type: "double_score"}] // 特殊格子接口
}GameState 中预留 sessionStats 对象,记录:
- 拼出的最长单词
- 单回合最高分
- 消耗金币总数
- MVP: 能够购买字母、拖动到网格、计算基础分、判定胜负。
- Phase 2: 加入饰品系统、特殊格子。
- Phase 3: 接入真实英文词库 API。