From 045a336f4950e3dc56a6ab0ba3be285895c5c4ec Mon Sep 17 00:00:00 2001 From: Qi-huanye <2728290997@qq.com> Date: Sat, 25 Apr 2026 16:50:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86TODO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TODO.md | 333 +++++++--------- 强化TODO.md | 79 ---- 强化升级.md | 1101 --------------------------------------------------- 3 files changed, 135 insertions(+), 1378 deletions(-) delete mode 100644 强化TODO.md delete mode 100644 强化升级.md diff --git a/TODO.md b/TODO.md index b6fe7cb..5ad9915 100644 --- a/TODO.md +++ b/TODO.md @@ -1,230 +1,167 @@ # Rogue Tetris TODO List -说明:本清单基于 [Rogue_Tetris_功能设计文档](./Rogue_Tetris_功能设计文档.md) 整理,后续实现严格遵守以下约束: +更新时间:2026-04-25 + +本清单基于当前代码实况重新整理,目的不是重复旧阶段计划,而是给下一轮开发提供可直接执行的任务顺序。 + +## 已核验现状 + +- [x] 当前项目可以通过 `build-mingw.ps1` 正常编译 +- [x] 已有开始菜单、经典模式、Rogue 模式、规则页面 +- [x] 已有经典 / Rogue 主流程分流 +- [x] 已有等级、EXP、升级暂停、三选一升级 UI +- [x] 已有较大规模强化池,已超出最初的 P1 范围 +- [x] 已有右侧 HUD、反馈浮层、Hold、特殊主动技能与多类特殊方块 +- [x] 当前渲染主要依赖 GDI 绘制,占位视觉已能支撑开发联调 +- [ ] `README.md` 仍明显落后于当前实际功能 + +## 不变约束 - [x] 不使用 `class`、继承、多态等面向对象特性 -- [x] 以 `struct + 全局状态 + 纯函数/过程函数 + 模块化源文件` 组织代码 -- [x] 保留当前原版俄罗斯方块玩法,作为“经典模式” -- [x] 新增开始菜单,进入游戏前先选择模式 -- [x] 模式至少包含:`经典模式`、`Rogue 模式` -- [x] 强化选择界面固定为“三选一”三个选项框,视觉参考《吸血鬼幸存者》 -- [ ] 美术、图标、特效、音频先全部使用占位符资源 +- [x] 继续采用 `struct + 全局状态 + 纯函数/过程函数 + 模块化源文件` +- [x] 经典模式继续作为稳定基线 +- [x] Rogue 模式继续独立演进,不把新逻辑重新塞回经典流程 -## 阶段 0:重构准备与技术基线 +## 当前主要问题 -目标:在不破坏现有可运行版本的前提下,为肉鸽系统预留结构。 +### 1. 状态仍然过于分散 -- [x] 盘点当前全局变量、输入流程、计时器流程、渲染流程 -- [x] 明确哪些旧逻辑保留,哪些逻辑需要拆分成独立过程函数 -- [x] 明确保留当前版本作为“经典模式”基线,不把 Rogue 逻辑硬塞进唯一流程 -- [x] 设计新的状态拆分方案:游戏主状态、棋盘状态、当前方块状态、玩家成长状态、强化状态、UI 状态 -- [x] 增加“菜单状态 / 模式选择状态”设计 -- [ ] 统一命名风格,避免后续继续扩散 `type/state/nType` 这类语义偏弱命名 -- [x] 明确“升级中暂停”和“普通暂停”是两个不同状态 -- [ ] 确定占位符资源策略:纯色块、边框、占位图标、占位按钮 +- [ ] `nType / type / state / point / target / nextTypes / holdType` 仍是零散全局变量 +- [ ] `gameOverFlag / suspendFlag / currentScreen / currentMode / currentFallInterval` 仍未收敛到统一运行时结构 +- [ ] `PlayerStats` 已非常庞大,但仍混合“永久成长值 / 临时效果 / 主动道具 / 计时状态” +- [ ] 尚未形成明确的 `PieceState` / `RuntimeState` / `BoardState` 边界 + +### 2. 强化系统已能跑,但还不够“可维护” + +- [ ] `UpgradeEntry` 已存在,但运行时强化状态仍主要散落在 `PlayerStats` +- [ ] 缺少真正的 `UpgradeRuntime` 聚合结构,后续继续加强化会越来越难维护 +- [ ] 强化摘要、权重、可选条件、应用效果已经开始互相耦合 +- [ ] 当前强化数量已经很多,继续直接往 `switch` 里堆功能风险很高 + +### 3. 文档、资源与代码现状不一致 + +- [ ] `README.md` 需要按当前 Rogue 版本重写 +- [ ] `TODO.md` 以外的说明文档也需要同步功能现状 +- [ ] `assets` 目录目前主要只有图标、背景图、音频文件,占位 UI 资源没有统一命名和落盘 +- [ ] 当前程序实际上没有把 `assets/images`、`assets/audio` 真正接入主流程,只有图标进入资源编译 + +### 4. 缺少系统化回归与边界验证 + +- [ ] 连续升级、多选升级、诅咒升级的组合边界还没有形成固定检查项 +- [ ] 失败复活、黑洞、清屏炸弹、空中换形、爆破/激光/十字方块之间还缺少系统回归 +- [ ] 经典模式与 Rogue 模式共享底层逻辑,仍需要持续确认互不污染 +- [ ] 当前没有最小回归测试清单,后续改结构风险很高 + +## 接下来建议按这个顺序做 + +## 第一优先级:先收敛状态结构 + +目标:在不改玩法的前提下,先把后续开发最痛的结构债降下来。 + +- [ ] 新增 `PieceState` + 内容至少包含:当前方块类型、旋转状态、坐标、目标落点、Hold 状态、本回合是否已 Hold、当前特殊标记 +- [ ] 新增 `BoardState` + 内容至少包含:`workRegion` 与和棋盘直接相关的辅助数据 +- [ ] 新增 `RunState` 或等效结构 + 内容至少包含:当前界面、当前模式、暂停、失败、当前下落间隔 +- [ ] 把 `Tetris.h` 里的裸 `extern` 全局变量逐步迁入以上结构 +- [ ] 保证迁移后仍维持纯过程式接口,不引入成员函数 完成标准: -- [x] 写出核心数据结构草案 -- [x] 写出模块拆分草案 -- [ ] 当前版本仍可正常编译运行 +- [ ] `Tetris.h` 中裸全局变量数量明显下降 +- [ ] 生成、移动、固定、消行、渲染读取状态时不再依赖一串离散全局 +- [ ] 迁移后项目仍可正常编译运行 -## 阶段 1:开始菜单与模式选择 +## 第二优先级:把强化系统改成可继续扩展的形态 -目标:先把“玩哪种模式”从启动流程里分出来,保证经典模式和 Rogue 模式能共存。 +目标:在已有强化很多的前提下,避免后面每加一个功能都扩大维护成本。 -- [x] 新增开始菜单界面,不启动即直接进入对局 -- [x] 菜单至少提供两个可选项:`经典模式`、`Rogue 模式` -- [x] 增加菜单输入处理:上下/左右切换,确认进入 -- [x] 增加当前选中模式的高亮显示 -- [x] 增加菜单状态与对局状态之间的切换逻辑 -- [x] 从菜单进入经典模式时,沿用当前原版规则 -- [x] 从菜单进入 Rogue 模式时,进入带经验升级与强化的流程 -- [ ] 预留未来扩展入口,如“退出游戏”或“帮助说明” +- [ ] 新增 `UpgradeRuntime` 或等效结构 + 用于集中保存强化层数、主动技能次数、临时计时器、特殊开关 +- [ ] 评估 `PlayerStats` 中哪些字段应保留为“玩家结算统计”,哪些应迁出到 `UpgradeRuntime` +- [ ] 整理 `ApplyUpgradeById()` 的职责边界 + 区分“加层数”“立即生效”“修改掉落速度”“发放主动道具” +- [ ] 整理强化摘要生成逻辑 + 避免右侧面板继续手写长串拼接 +- [ ] 给强化池补一份分层标记 + 至少区分:基础成长、操作增强、主动技能、特殊方块、风险收益、进化类 完成标准: -- [x] 启动后先进入菜单 -- [x] 两种模式都能正常进入 -- [x] 经典模式不受 Rogue 功能影响 +- [ ] 新强化的接入步骤能稳定收敛为“定义数据 -> 写效果 -> 接摘要/显示” +- [ ] 不再继续向 `PlayerStats` 追加无边界字段 -## 阶段 2:核心数据结构改造 +## 第三优先级:补齐占位资源与表现层基线 -目标:把当前普通俄罗斯方块状态扩展成可承载 Rogue 系统的数据。 +目标:把“纯 GDI 占位绘制”升级成“代码与资源协作的占位版本”,为后续替换美术留接口。 -- [x] 新增 `MenuState` 或等效结构,记录菜单选项与当前选中项 -- [x] 新增 `GameState` 相关结构,记录运行态、暂停态、升级选择态、结算态 -- [x] 新增 `ModeState` 或模式标记,区分经典模式与 Rogue 模式 -- [ ] 新增 `PieceState` 结构,管理当前方块、下一方块、目标落点、是否可 Hold -- [x] 新增 `PlayerStats` 结构,包含分数、等级、经验、所需经验、连击、总消行数 -- [ ] 新增 `UpgradeEntry` 结构,包含 `id`、名称、描述、分类、当前层数、是否可重复 -- [ ] 新增 `UpgradeRuntime` 结构,保存已获得强化和运行时效果值 -- [x] 新增 `UiState` 结构,保存当前三个升级选项、当前高亮项、弹窗可见性 -- [ ] 将现有散落的全局变量逐步收敛到几个结构体中 -- [x] 保留纯过程式调用,不引入成员函数 +- [ ] 新建统一占位资源命名规范 + 例如:`assets/ui/placeholder_panel_*`、`placeholder_upgrade_icon_*` +- [ ] 至少补齐以下占位资源: + - [ ] 升级卡片图标 + - [ ] 面板边框 + - [ ] 按钮 / 提示框底图 + - [ ] 规则页 / 菜单页的装饰性占位元素 +- [ ] 明确哪些资源继续用 GDI 画,哪些开始从 `assets` 加载 +- [ ] 检查 `background.bmp`、`background.wav` 是否要接入;如果短期不用,就从待办里单列,不再默认“已接入” +- [ ] 明确升级界面的选中态、普通态、诅咒态之外,是否还需要真正的禁用态 完成标准: -- [ ] 代码中已能通过结构体访问大部分核心状态 -- [ ] 不再继续新增零散全局变量 +- [ ] 占位资源统一落在 `assets` 中 +- [ ] 命名统一,不再出现临时散放资源 +- [ ] 表现层替换资源时不需要回头改业务逻辑 -## 阶段 3:经典模式与 Rogue 模式分流 +## 第四优先级:平衡与回归 -目标:先把公共逻辑和模式专属逻辑分开,避免后续互相污染。 - -- [x] 抽离经典模式与 Rogue 模式共享的核心逻辑:移动、旋转、落地、消行、渲染基础棋盘 -- [x] 经典模式保持当前简单计分与基础 UI -- [x] Rogue 模式单独接入经验、等级、强化、升级界面 -- [x] 输入处理按模式分流,避免经典模式响应强化界面按键 -- [x] 渲染流程按模式分层:公共层、经典模式层、Rogue 模式层 - -完成标准: - -- [x] 两种模式共用一套基础方块逻辑 -- [x] Rogue 新功能不会破坏经典模式 - -## 阶段 4:分数、经验、等级主循环 - -目标:把“消行 -> 得分 -> 获得经验 -> 触发升级”接入 Rogue 模式主循环。 - -- [x] 重写消行结算函数,返回本次消除行数 -- [x] 按文档接入基础得分:1/2/3/4 行分别对应不同分值 -- [x] 按文档接入经验收益:1/2/3/4 行分别给予不同 EXP -- [ ] 接入倍率计算:分数倍率、经验倍率、四消奖励、连击奖励 -- [x] 新增升级判定函数,支持一次结算后连续升多级 -- [x] 升级触发时停止下落计时与普通输入 -- [ ] 在右侧信息面板显示等级、EXP、所需 EXP、当前已获得强化摘要 - -完成标准: - -- [x] 消行后可以稳定增加分数和经验 -- [x] 达到阈值后必定进入升级选择状态 - -## 阶段 5:强化池与三选一系统 - -目标:先完成最关键的 Rogue 核心体验。 - -- [ ] 建立强化池初始化函数,不使用类,采用静态数组或 `std::vector` -- [ ] 先实现一批 P1 基础强化,优先选 6 个左右最稳定的: -- [x] `score_multiplier` -- [x] `combo_bonus` -- [x] `slow_fall` -- [x] `preview_plus_one` -- [x] `exp_multiplier` -- [x] `last_chance` -- [x] 随机抽取 3 个不重复选项,避免当前局内明显无效选项 -- [x] 支持重复强化的层数叠加 -- [x] 选中后立即应用效果并返回游戏 -- [x] 为后续强化扩展预留 `applyUpgradeById()` 分发函数 - -完成标准: - -- [x] 每次升级都稳定弹出三个选项框 -- [x] 选择任一选项后效果立即生效 - -## 阶段 6:升级界面 UI - -目标:实现参考《吸血鬼幸存者》的三选一视觉结构,先用占位表现。 - -- [x] 增加全屏或半透明遮罩,压暗游戏场景 -- [x] 中央显示三个横向或纵向排列的选项框 -- [x] 每个选项框至少包含:占位图标、强化名、强化说明、强化分类、当前层数 -- [x] 支持键盘选择:`A/D` 或方向键切换,`Enter/Space` 确认 -- [ ] 高亮态、选中态、禁用态视觉区分明确 -- [x] 保证四个框尺寸一致、布局稳定,不因文本长度错位 -- [x] 右侧现有信息面板在升级状态下保留或弱化显示,但不能抢焦点 -- [ ] 占位资源统一放入 `assets`,命名先按 `placeholder_*` - -完成标准: - -- [x] 升级界面可以独立显示 -- [x] 三个选项框可操作、可确认、可关闭 -- [x] 视觉结构已经接近目标形式,后续只需替换资源 - -## 阶段 7:玩法强化第一轮 - -目标:把最影响体验的几个强化真正接入玩法。 - -- [x] 分数倍率:影响所有结算得分 -- [x] 连击奖励:连续多次成功消行追加奖励 -- [x] 慢速下落:降低自然下落速度 -- [x] 额外预览:从 1 个 Next 扩展到 2~3 个 -- [x] EXP 强化:提升经验获取倍率 -- [x] 最后一搏:失败前自动清除底部 3 行,仅触发一次 - -完成标准: - -- [x] 每个强化都能在实际对局中观察到效果 -- [ ] 强化效果叠加后不会引发明显逻辑冲突 - -## 阶段 8:特殊机制第二轮 - -目标:在主体验稳定后再上特殊规则,避免一开始把复杂度拉满。 - -- [x] Hold 功能改造成可解锁能力,而不是默认启用 -- [ ] 扩展更多预览块显示 -- [x] 清扫者:累计消行触发底部清除 -- [x] 爆破方块:生成特殊方块并实现 3x3 清除 -- [x] 减压:升级后清除最高占用行 -- [x] 稳定结构:小概率自动填补邻近空洞 -- [x] 双倍成长 / 赌徒 / 方块改运等特殊强化 - -完成标准: - -- [x] 至少 2 个特殊机制能稳定跑通 -- [ ] 不会明显破坏基础俄罗斯方块节奏 - -## 阶段 9:界面补全与反馈 - -目标:让系统信息足够清楚,不靠猜测理解机制。 - -- [x] 右侧面板补充等级、EXP 条、强化列表、当前倍率 -- [x] 增加本次结算浮动提示:`+Score`、`+EXP`、`Level Up` -- [x] 为特殊强化增加简短提示文案 -- [x] 增加暂停、升级、失败三种不同遮罩样式 -- [ ] 增加占位图标、占位按钮、占位边框资源 -- [ ] 检查中文排版、字号、留白、长文本换行 - -完成标准: - -- [x] 玩家能看懂自己为什么升级、为什么得分变化 - -## 阶段 10:平衡与稳定性 - -目标:把版本从“能跑”拉到“能玩”。 +目标:把版本从“功能很多”拉到“继续改也不容易坏”。 - [ ] 调整等级需求曲线 -- [ ] 调整强化出现权重,避免过强或无效强化频繁出现 -- [ ] 调整下落速度、经验速度、升级频率 -- [x] 修复升级状态下的非法输入问题 -- [ ] 修复连续升级、失败复活、爆破消行等边界问题 -- [ ] 增加最基础回归测试清单 +- [ ] 调整强化权重与前置条件,减少无效选项 +- [ ] 复查 Rogue 掉落速度曲线,避免后期过慢或过快 +- [ ] 检查以下边界: + - [ ] 连续升级时的 `pendingCount / picksRemaining / optionCount` + - [ ] `last_chance`、`terminal_clear`、失败判定之间的顺序 + - [ ] 特殊方块落地后再消行时的结算顺序 + - [ ] Hold 后无法放置的失败分支 + - [ ] 黑洞 / 清屏炸弹 / 空中换形在暂停、升级、失败状态下的屏蔽是否完整 +- [ ] 写出最小人工回归清单 -回归检查: +建议最小回归清单: -- [ ] 开局正常生成方块 -- [ ] 消行得分与经验正确 -- [x] 升级必出 3 个选项框 -- [x] 选择后恢复游戏且不丢状态 -- [ ] 复活、暂停、失败、重开互不冲突 +- [ ] 经典模式正常开局、移动、旋转、消行、失败、重开 +- [ ] Rogue 模式正常获得分数、EXP、升级 +- [ ] 升级时稳定弹出正确数量的选项 +- [ ] 多选升级结束后能正确回到游戏 +- [ ] Hold、黑洞、清屏炸弹、空中换形只在允许状态下生效 +- [ ] 最后一搏触发后不会直接卡死或丢失当前局状态 -## 建议实现顺序 +## 本轮之后立即可做的具体任务 -1. 先做阶段 1 到阶段 3,把“菜单选模式 + 经典 / Rogue 分流”打通。 -2. 再做阶段 4 到阶段 6,完成 Rogue 的经验升级与三选一界面。 -3. 然后做阶段 7,把第一批基础强化真正接上。 -4. 最后做阶段 8 到阶段 10,补特殊机制、表现和调平衡。 +### A. 结构重构起手式 -## 当前最近一轮执行清单 +- [ ] 先只提取 `PieceState` +- [ ] 先把 `type / state / point / target / holdType / holdUsedThisTurn / currentPieceIs* / nextTypes` 收进去 +- [ ] 保持函数名不变,先改内部访问路径,避免一次性大拆 -- [x] 加入开始菜单状态 -- [x] 做出模式选择菜单占位 UI -- [x] 接入 `经典模式 / Rogue 模式` 两个入口 -- [x] 建立新的状态结构体与头文件声明 -- [x] 拆分经典模式与 Rogue 模式主循环 -- [x] 重写消行结算返回值 -- [x] 加入 `PlayerStats` -- [x] 加入经验与升级判定 -- [x] 加入升级状态切换 -- [x] 做出三个升级选项框的占位 UI -- [x] 接入第一批 6 个基础强化 +### B. 文档同步 + +- [ ] 重写 `README.md` 的“当前状态”和“项目简介” +- [ ] 补一段当前已实现强化类型总览 +- [ ] 标明目前构建方式和已验证可编译状态 + +### C. 回归清单落地 + +- [ ] 在项目根目录补一份简短测试清单文档 +- [ ] 每次改动状态结构后先跑构建,再按清单手动验一轮 + +## 暂不优先处理 + +- [ ] 现在先不要继续无节制扩充强化种类 +- [ ] 现在先不要做大规模视觉重绘 +- [ ] 现在先不要把经典模式改造成也依赖 Rogue HUD + +## 一句话总结 + +下一阶段的重点不是“再加多少强化”,而是先把已经做出来的 Rogue 系统整理成可继续扩展、可回归、可替换资源的结构。 diff --git a/强化TODO.md b/强化TODO.md deleted file mode 100644 index 69d4249..0000000 --- a/强化TODO.md +++ /dev/null @@ -1,79 +0,0 @@ -# 强化系统 TODO 对照表 - -说明: - -- 本文件以 [强化升级.md](D:/VSC_program/Tereis/强化升级.md) 为准,对照当前代码实现整理。 -- 状态分为:`已完成`、`部分完成`、`未完成`。 -- “升级路径”列表示前置或合成路线;基础强化记为 `基础出现`。 -- 个别强化在代码里已有相近功能,但还没有按文档要求接入强化池,这类记为 `部分完成`。 - -## 汇总 - -| 状态 | 数量 | -|---|---:| -| 已完成 | 35 | -| 部分完成 | 0 | -| 未完成 | 0 | - -## 已完成 - -| 强化 | 分类 | 当前效果 | 升级路径 | -|---|---|---|---| -| 积分倍率 | 基础 | 所有得分提高 20%,可叠加 | 基础出现 | -| 经验强化 | 基础 | 消行获得 EXP 提高 25%,可叠加 | 基础出现 | -| 慢速下落 | 基础 | 自然下落速度降低,可叠加并受最低速度限制 | 基础出现 | -| 额外预览 | 基础 | 预览数量增加,当前最多到 3 个 | 基础出现 | -| 暂存槽 | 基础 | 解锁 Hold | 基础出现 | -| 最后一搏 | 基础 | 濒死时自动清除底部 3 行并续命一次 | 基础出现 | -| 成长核心 | 基础 | 选择后永久提高 15% 得分和 15% EXP 获取,只能选择一次 | 基础出现 | -| 炸弹方块 | 爽感 | 每隔 10 个方块生成一个炸弹方块,落地后清除周围 3x3 区域 | 基础出现 | -| 激光方块 | 爽感 | 特殊激光块落地后清除整列 | 基础出现 | -| 十字方块 | 爽感 | 特殊方块落地后同时清除所在行与列 | 基础出现 | -| 连锁爆破 | 爽感 | 消行后额外清除附近若干格 | 炸弹方块 | -| 雷霆四消 | 爽感 | 四消时额外清除随机 2 行 | 激光方块 | -| 暴走堆叠 | 爽感 | 连击越高得分倍率越高 | 基础出现 | -| 清屏炸弹 | 爽感 | 累计消行充能,获得可主动释放的底部 5 行清屏 | 基础出现 | -| 升级冲击波 | 爽感 | 每次升级时自动清除底部 2 行 | 积分倍率 + 经验强化 + 减压 | -| 黑洞 | 爽感 | 获得有限次数主动技能,释放后清除棋盘中数量最多的一种方块 | 基础出现 | -| 方块风暴 | 爽感 | 接下来 5 个方块全部变成 I 方块 | 基础出现 | -| 彩虹方块 | 爽感 | 概率生成彩虹方块,落地后可自动补全所在行的单格缺口,更容易补齐消行 | 基础出现 | -| 完美旋转 | 操作 | 旋转失败时自动尝试左右各偏移 1 格修正 | 基础出现 | -| 空中换形 | 操作 | 获得有限次数主动技能,可将当前方块变为 I 方块 | 基础出现 | -| 赌徒 | 风险 | 选强化时概率双倍生效,也可能落空 | 基础出现 | -| 双重选择 | 风险 | 升级时可额外再选 1 个强化,下次升级需求提高 30% | 基础出现 | -| 高压奖励 | 风险 | 下落速度提高 15%,得分和 EXP 额外提高 50% | 基础出现 | -| 连环炸弹 | 进化 | 爆炸范围提升到 5x5,触发消行时追加一次小爆炸 | 炸弹方块 + 连锁爆破 | -| 雷霆激光 | 进化 | 四消时额外发射 2 道激光并获得额外 EXP | 激光方块 + 雷霆四消 | -| 进化冲击 | 进化 | 升级时清除底部 3 行并获得 10 秒双倍经验 | 升级冲击波 + 成长核心 | -| 无限狂热 | 进化 | 狂热期间消行延长时间,四消额外延长,连击加成更强 | 狂热模式 + 暴走堆叠 | -| 终末清场 | 进化 | 触发最后一搏时自动释放一次清屏炸弹,并进入狂热 | 清屏炸弹 + 最后一搏 | -| 操控大师 | 进化 | Hold 后短时间减速、旋转失败自动修正、增加一个预览 | 完美旋转 + 暂存槽 | -| 命运轮盘 | 进化 | 升级出现 5 个选项,可选 2 个,其中 1 个附带诅咒 | 赌徒 + 双重选择 | -| 虚空核心 | 进化 | 黑洞后额外生成一个彩虹方块;彩虹方块参与消行时触发一次小型黑洞 | 黑洞 + 彩虹方块 | -| 狂热模式 | 爽感 | 每累计消除 20 行进入 10 秒狂热;期间得分/EXP x2、下落减慢,特殊方块出现率提高 | 基础出现 | -| 时间缓流 | 操作/生存 | 当棋盘高度超过 15 行时,自动触发 8 秒 30% 下落减速 | 基础出现 | -| 赌命四消 | 风险 | 普通 1~3 消得分降低,四消得分提高 300% | 基础出现 | -| 极限玩家 | 进化 | 进一步提速,四消得分更高、四消后缓速 5 秒,30 秒未四消会提高危险等级 | 高压奖励 + 赌命四消 | - -## 部分完成 - -| 强化 | 分类 | 当前状态 | 升级路径 | -|---|---|---|---| - -## 未完成 - -| 强化 | 分类 | 目标效果 | 升级路径 | -|---|---|---|---| - -## 备注 - -| 强化 | 备注 | -|---|---| -| 升级冲击波 | 现在按新规划处理为 `积分倍率 + 经验强化 + 减压` 的升级强化,不再作为基础强化单独出现 | -| 幽灵落点 | 常规功能已存在,后续不纳入 Rogue 强化池实现范围 | -| 精准控制 | 因 `幽灵落点` 不纳入强化池,当前版本也不再作为后续必做强化 | - -## 推荐下一批实现顺序 - -1. 强化系统文档与 UI 文案细节继续统一 -2. 继续做更强的视觉反馈和特效表现 diff --git a/强化升级.md b/强化升级.md deleted file mode 100644 index 64b79f8..0000000 --- a/强化升级.md +++ /dev/null @@ -1,1101 +0,0 @@ -# 《Rogue Tetris》强化系统与合成路线设计 - -## 1. 设计目标 - -本系统用于在基础俄罗斯方块玩法中加入类肉鸽成长体验。 - -核心目标: - -1. 玩家通过消行获得经验并升级。 -2. 每次升级随机出现若干强化。 -3. 强化之间存在前置关系和合成路线。 -4. 玩家可以围绕强化组合形成不同流派。 -5. 强化既提供数值成长,也提供清屏、爆破、狂热等爽感反馈。 - ---- - -## 2. 强化层级 - -强化分为三类: - -| 层级 | 说明 | 示例 | -|---|---|---| -| 基础强化 | 可以直接随机获得,提供基础能力 | 积分倍率、经验强化、慢速下落 | -| 进阶强化 | 需要拥有指定基础强化后才会出现 | 连锁爆破、雷霆四消、狂热模式 | -| 进化强化 | 由两个或多个强化合成解锁 | 连环炸弹、雷霆激光、无限狂热 | - ---- - -## 3. 基础强化列表 - -### 3.1 积分倍率 - -**类型:** 得分强化 - -**效果:** 所有得分提高 20%。 - -**可叠加:** 可以。 - -**作用:** 提高基础收益,是得分流派的通用强化。 - -**相关联动:** - -- 与狂热模式叠加后,可以进一步提高爆发期得分。 -- 与暴走堆叠叠加后,连击收益更高。 - ---- - -### 3.2 经验强化 - -**类型:** 成长强化 - -**效果:** 消行获得的经验提高 25%。 - -**可叠加:** 可以。 - -**作用:** 加快升级速度,提高获取后续强化的频率。 - -**相关联动:** - -- 与成长核心组合,可以形成快速升级流派。 -- 与狂热模式组合,可以在狂热期间获得更高经验收益。 - ---- - -### 3.3 慢速下落 - -**类型:** 操作强化 - -**效果:** 方块自然下落速度降低 10%。 - -**可叠加:** 可以,但建议设置最低速度限制。 - -**作用:** 降低操作压力,提高容错率。 - -**相关合成:** - -```text -慢速下落 + 幽灵落点 = 精准控制 -``` - ---- - -### 3.4 额外预览 - -**类型:** 操作强化 - -**效果:** 增加下一个方块预览数量。 - -**可叠加:** 可以。 - -**作用:** 提高玩家规划能力。 - -**相关联动:** - -- 与暂存槽组合后,可以显著提升方块规划能力。 -- 与操控大师组合后,进一步提高稳定性。 - ---- - -### 3.5 暂存槽 - -**类型:** 操作强化 - -**效果:** 解锁 Hold 功能,允许暂存当前方块。 - -**可叠加:** 不建议重复获得;重复获得时可减少 Hold 冷却。 - -**作用:** 提高操作策略性。 - -**相关合成:** - -```text -暂存槽 + 完美旋转 = 操控大师 -``` - ---- - -### 3.6 最后一搏 - -**类型:** 生存强化 - -**效果:** 当玩家即将失败时,自动清除底部 3 行。 - -**可叠加:** 不建议。 - -**限制:** 每局只能触发一次。 - -**作用:** 提供绝境翻盘能力。 - -**相关合成:** - -```text -最后一搏 + 清屏炸弹 = 终末清场 -``` - ---- - -### 3.7 成长核心 - -**类型:** 成长强化 - -**效果:** 选择后,永久提高 15% 得分和 15% 经验获取。 - -**可叠加:** 不可重复获得。 - -**作用:** 提供稳定的中期成长收益,适合作为成长流派核心底座。 - -**相关合成:** - -```text -成长核心 + 升级冲击波 = 进化冲击 -``` - ---- - -## 4. 爽感强化列表 - -### 4.1 炸弹方块 - -**类型:** 特殊方块 - -**效果:** 每隔 10 个方块,生成一个炸弹方块。炸弹方块落地后清除周围 3x3 区域。 - -**作用:** 提供范围清除能力,适合爆破流。 - -**相关合成:** - -```text -炸弹方块 + 连锁爆破 = 连环炸弹 -``` - ---- - -### 4.2 激光方块 - -**类型:** 特殊方块 - -**效果:** 特殊方块落地后,清除所在整列。 - -**作用:** 解决高塔死局,适合雷电流。 - -**相关合成:** - -```text -激光方块 + 雷霆四消 = 雷霆激光 -``` - ---- - -### 4.3 十字方块 - -**类型:** 特殊方块 - -**效果:** 特殊方块落地后,清除所在行与所在列。 - -**作用:** 强力清场,适合作为稀有强化。 - -**相关联动:** - -- 与狂热模式组合后,可以在爆发期快速清理棋盘。 -- 与雷电流强化组合后,可以形成大范围行列清除。 - ---- - -### 4.4 彩虹方块 - -**类型:** 特殊方块 - -**效果:** 可以替代任意方块格子,用于补齐消行。 - -**作用:** 提高清行概率,适合与黑洞联动。 - -**相关合成:** - -```text -彩虹方块 + 黑洞 = 虚空核心 -``` - ---- - -### 4.5 连锁爆破 - -**类型:** 消行强化 - -**效果:** 消行后,对被消除行附近随机清除若干格。 - -**作用:** 增强连续清屏爽感。 - -**相关合成:** - -```text -连锁爆破 + 炸弹方块 = 连环炸弹 -``` - ---- - -### 4.6 雷霆四消 - -**类型:** 消行强化 - -**效果:** 每次完成四消时,额外清除随机 2 行。 - -**作用:** 提高四消收益,让四消成为爆发事件。 - -**相关合成:** - -```text -雷霆四消 + 激光方块 = 雷霆激光 -``` - ---- - -### 4.7 升级冲击波 - -**类型:** 成长爆发 - -**效果:** 每次升级时,自动清除底部 2 行。 - -**作用:** 让升级本身产生明显反馈。 - -**升级前置:** - -```text -积分倍率 + 经验强化 + 减压 = 升级冲击波 -``` - -**相关合成:** - -```text -升级冲击波 + 成长核心 = 进化冲击 -``` - ---- - -### 4.8 狂热模式 - -**类型:** 爆发强化 - -**效果:** 每累计消除 20 行,进入 10 秒狂热模式。 - -**狂热期间效果:** - -- 得分 x2 -- 经验 x2 -- 下落速度降低 -- 特殊方块出现率提高 - -**相关合成:** - -```text -狂热模式 + 暴走堆叠 = 无限狂热 -``` - ---- - -### 4.9 暴走堆叠 - -**类型:** 连击强化 - -**效果:** 短时间内连续消行越多,得分倍率越高。 - -**作用:** 鼓励玩家保持连击节奏。 - -**相关合成:** - -```text -暴走堆叠 + 狂热模式 = 无限狂热 -``` - ---- - -### 4.10 清屏炸弹 - -**类型:** 主动技能 - -**效果:** 累计消除 30 行后,获得一次主动技能,释放后清除底部 5 行。 - -**作用:** 提供强力翻盘手段。 - -**相关合成:** - -```text -清屏炸弹 + 最后一搏 = 终末清场 -``` - ---- - -### 4.11 黑洞 - -**类型:** 特殊强化 - -**效果:** 清除棋盘中数量最多的一种方块。 - -**作用:** 提供大范围清除能力。 - -**相关合成:** - -```text -黑洞 + 彩虹方块 = 虚空核心 -``` - ---- - -### 4.12 方块风暴 - -**类型:** 爆发强化 - -**效果:** 进入短时间特殊模式,接下来 5 个方块全部变成 I 方块。 - -**作用:** 让玩家快速制造四消机会。 - -**相关联动:** - -- 与雷霆四消组合,可以快速触发四消爆发。 -- 与赌命四消组合,可以形成高风险高收益打法。 - ---- - -## 5. 操作强化列表 - -### 5.1 完美旋转 - -**类型:** 操作强化 - -**效果:** 方块旋转失败时,自动尝试左右偏移一格。 - -**作用:** 优化手感,减少误操作。 - -**相关合成:** - -```text -完美旋转 + 暂存槽 = 操控大师 -``` - ---- - -### 5.2 幽灵落点 - -**类型:** 操作强化 - -**效果:** 显示当前方块最终落点。 - -**作用:** 提高摆放准确性。 - -**相关合成:** - -```text -幽灵落点 + 慢速下落 = 精准控制 -``` - ---- - -### 5.3 时间缓流 - -**类型:** 生存强化 - -**效果:** 当棋盘高度超过 15 行时,自动降低下落速度 30%,持续 8 秒。 - -**作用:** 提供绝境反应时间。 - -**相关联动:** - -- 与最后一搏组合,可以增强濒死翻盘能力。 -- 与精准控制组合,可以帮助玩家稳定修复棋盘。 - ---- - -### 5.4 空中换形 - -**类型:** 主动技能 - -**效果:** 可以将当前方块变成指定方块,例如 I 方块。 - -**限制:** 每局使用次数有限。 - -**作用:** 避免关键时刻抽不到合适方块。 - -**相关联动:** - -- 与雷霆四消组合,可以主动创造四消机会。 -- 与赌命四消组合,可以提高高风险玩法的成功率。 - ---- - -## 6. 风险收益强化列表 - -### 6.1 赌徒 - -**类型:** 风险强化 - -**效果:** 每次升级时,有概率获得双倍强化,也有概率本次强化无效果。 - -**作用:** 增加随机性。 - -**相关合成:** - -```text -赌徒 + 双重选择 = 命运轮盘 -``` - ---- - -### 6.2 双重选择 - -**类型:** 成长强化 - -**效果:** 每次升级可以选择 2 个强化,但下一次升级所需经验提高 30%。 - -**作用:** 提高构筑速度,但增加成长压力。 - -**相关合成:** - -```text -双重选择 + 赌徒 = 命运轮盘 -``` - ---- - -### 6.3 高压奖励 - -**类型:** 风险强化 - -**效果:** 方块下落速度提高 15%,但得分和经验提高 50%。 - -**作用:** 高风险高收益。 - -**相关合成:** - -```text -高压奖励 + 赌命四消 = 极限玩家 -``` - ---- - -### 6.4 赌命四消 - -**类型:** 风险强化 - -**效果:** 普通消行得分降低,但四消奖励提高 300%。 - -**作用:** 鼓励高风险四消打法。 - -**相关合成:** - -```text -赌命四消 + 高压奖励 = 极限玩家 -``` - ---- - -## 7. 进化强化与合成路线 - -### 7.1 连环炸弹 - -**合成路线:** - -```text -炸弹方块 + 连锁爆破 = 连环炸弹 -``` - -**效果:** - -- 炸弹爆炸范围从 3x3 提升为 5x5。 -- 炸弹爆炸后如果造成消行,则再次触发一次小型爆炸。 -- 适合爆破流核心构筑。 - ---- - -### 7.2 雷霆激光 - -**合成路线:** - -```text -激光方块 + 雷霆四消 = 雷霆激光 -``` - -**效果:** - -- 四消时额外发射 2 道激光。 -- 激光随机清除 2 列。 -- 如果激光造成新的消行,额外获得经验。 - ---- - -### 7.3 进化冲击 - -**合成路线:** - -```text -升级冲击波 + 成长核心 = 进化冲击 -``` - -**效果:** - -- 每次升级时清除底部 3 行。 -- 同时获得 10 秒双倍经验。 -- 等级越高,冲击波奖励越强。 - ---- - -### 7.4 无限狂热 - -**合成路线:** - -```text -狂热模式 + 暴走堆叠 = 无限狂热 -``` - -**效果:** - -- 狂热模式中每次消行都会延长持续时间。 -- 连击数越高,狂热倍率越高。 -- 狂热期间完成四消,额外延长 3 秒。 - ---- - -### 7.5 终末清场 - -**合成路线:** - -```text -清屏炸弹 + 最后一搏 = 终末清场 -``` - -**效果:** - -- 当玩家即将失败时,自动释放一次清屏炸弹。 -- 若成功避免失败,进入 10 秒狂热模式。 -- 每局最多触发一次。 - ---- - -### 7.6 操控大师 - -**合成路线:** - -```text -完美旋转 + 暂存槽 = 操控大师 -``` - -**效果:** - -- Hold 后当前方块短时间内下落速度降低。 -- 每个方块第一次旋转失败时自动修正。 -- 增加一个预览方块。 - ---- - -### 7.7 精准控制 - -**合成路线:** - -```text -幽灵落点 + 慢速下落 = 精准控制 -``` - -**效果:** - -- 显示更明确的落点预测。 -- 连续 3 次无空洞锁定方块,奖励额外经验。 -- 鼓励高质量摆放。 - ---- - -### 7.8 命运轮盘 - -**合成路线:** - -```text -赌徒 + 双重选择 = 命运轮盘 -``` - -**效果:** - -- 每次升级出现 5 个强化选项。 -- 可以选择 2 个。 -- 但其中 1 个可能附带负面效果。 - ---- - -### 7.9 极限玩家 - -**合成路线:** - -```text -高压奖励 + 赌命四消 = 极限玩家 -``` - -**效果:** - -- 方块下落速度继续提高。 -- 四消得分提升 500%。 -- 四消后立刻降低下落速度 5 秒。 -- 如果 30 秒内没有四消,增加一层危险等级。 - ---- - -### 7.10 虚空核心 - -**合成路线:** - -```text -黑洞 + 彩虹方块 = 虚空核心 -``` - -**效果:** - -- 黑洞触发后,随机生成一个彩虹方块。 -- 彩虹方块参与消行时,额外触发一次小型黑洞。 -- 小型黑洞清除棋盘中数量最多的 5 个格子。 - ---- - -## 8. 强化合成总表 - -| 进化强化 | 前置强化 1 | 前置强化 2 | 主要效果 | -|---|---|---|---| -| 连环炸弹 | 炸弹方块 | 连锁爆破 | 爆炸范围扩大并触发二次爆炸 | -| 雷霆激光 | 激光方块 | 雷霆四消 | 四消时额外清除随机列 | -| 进化冲击 | 升级冲击波 | 成长核心 | 升级时清除更多行并获得双倍经验 | -| 无限狂热 | 狂热模式 | 暴走堆叠 | 狂热期间消行延长持续时间 | -| 终末清场 | 清屏炸弹 | 最后一搏 | 濒死时自动释放清屏炸弹 | -| 操控大师 | 完美旋转 | 暂存槽 | Hold 后减速并增加预览 | -| 精准控制 | 幽灵落点 | 慢速下落 | 高质量摆放获得额外经验 | -| 命运轮盘 | 赌徒 | 双重选择 | 更多强化选择,但可能附带负面 | -| 极限玩家 | 高压奖励 | 赌命四消 | 四消收益极高但风险增加 | -| 虚空核心 | 黑洞 | 彩虹方块 | 黑洞和彩虹方块互相触发 | - ---- - -## 9. 强化联动设计 - -### 9.1 消行联动 - -| 条件 | 联动效果 | -|---|---| -| 消行 + 连锁爆破 | 额外清除附近格子 | -| 四消 + 雷霆四消 | 随机清除额外行 | -| 四消 + 狂热模式 | 狂热时间延长 | -| 炸弹爆炸 + 消行 | 触发二次爆炸 | -| 激光清列 + 消行 | 获得额外经验 | -| 彩虹方块 + 消行 | 提高特殊强化触发概率 | - ---- - -### 9.2 升级联动 - -| 条件 | 联动效果 | -|---|---| -| 升级 + 升级冲击波 | 清除底部行 | -| 升级 + 成长核心 | 提升永久倍率 | -| 升级 + 双重选择 | 可多选一个强化 | -| 升级 + 赌徒 | 强化可能翻倍或失效 | -| 升级 + 命运轮盘 | 出现更多选项,但可能带诅咒 | - ---- - -### 9.3 生存联动 - -| 条件 | 联动效果 | -|---|---| -| 接近失败 + 最后一搏 | 自动清除底部 3 行 | -| 接近失败 + 时间缓流 | 自动减速 | -| 接近失败 + 清屏炸弹 | 自动释放清屏技能 | -| 复活成功 + 狂热模式 | 进入短时间爆发 | -| 高度过高 + 激光方块 | 提高激光方块出现率 | - ---- - -## 10. 流派设计 - -### 10.1 爆破流 - -**核心强化:** - -```text -炸弹方块 -连锁爆破 -连环炸弹 -清屏炸弹 -黑洞 -``` - -**玩法特点:** - -- 大量范围清除。 -- 容易产生连续爆炸。 -- 爽感强。 -- 需要控制特殊方块出现频率,防止过强。 - ---- - -### 10.2 雷电流 - -**核心强化:** - -```text -激光方块 -雷霆四消 -雷霆激光 -十字方块 -方块风暴 -``` - -**玩法特点:** - -- 行列清除能力强。 -- 四消收益极高。 -- 适合技术型玩家。 -- 视觉表现可以做成闪电、光柱等效果。 - ---- - -### 10.3 狂热流 - -**核心强化:** - -```text -狂热模式 -暴走堆叠 -无限狂热 -成长核心 -经验强化 -``` - -**玩法特点:** - -- 越消越强。 -- 连击收益高。 -- 后期成长明显。 -- 适合追求高分。 - ---- - -### 10.4 操作流 - -**核心强化:** - -```text -幽灵落点 -慢速下落 -暂存槽 -完美旋转 -操控大师 -精准控制 -``` - -**玩法特点:** - -- 提高手感。 -- 降低失误。 -- 适合稳定通关。 -- 实现难度较低。 - ---- - -### 10.5 赌徒流 - -**核心强化:** - -```text -赌徒 -双重选择 -高压奖励 -赌命四消 -命运轮盘 -极限玩家 -``` - -**玩法特点:** - -- 收益高。 -- 风险高。 -- 随机性强。 -- 肉鸽味更明显。 - ---- - -## 11. C++ 数据结构设计 - -### 11.1 强化标签 - -```cpp -enum class UpgradeTag { - Score, - Exp, - Bomb, - Laser, - Fever, - Survival, - Control, - Gamble, - Special -}; -``` - ---- - -### 11.2 强化类型 - -```cpp -enum class UpgradeType { - Score, - Growth, - Control, - Clear, - Survival, - Special, - Gamble, - Evolution -}; -``` - ---- - -### 11.3 强化结构体 - -```cpp -struct Upgrade { - string name; - string description; - - UpgradeType type; - vector tags; - - vector requiredUpgrades; - - bool isEvolution = false; - bool repeatable = false; -}; -``` - ---- - -### 11.4 玩家强化记录 - -```cpp -struct PlayerStats { - int score = 0; - int level = 1; - int exp = 0; - int requiredExp = 100; - - float scoreMultiplier = 1.0f; - float expMultiplier = 1.0f; - float fallSpeed = 1.0f; - - int previewCount = 1; - int upgradeChoiceCount = 3; - int upgradePickCount = 1; - - bool canHold = false; - bool hasRevive = false; - bool enableRandomCurse = false; - - vector ownedUpgrades; -}; -``` - ---- - -## 12. 强化出现条件判断 - -### 12.1 判断是否拥有指定强化 - -```cpp -bool hasUpgrade(const vector& ownedUpgrades, const string& name) { - return find(ownedUpgrades.begin(), ownedUpgrades.end(), name) != ownedUpgrades.end(); -} -``` - ---- - -### 12.2 判断强化是否可出现 - -```cpp -bool canAppear(const Upgrade& upgrade, const vector& ownedUpgrades) { - for (const string& required : upgrade.requiredUpgrades) { - if (!hasUpgrade(ownedUpgrades, required)) { - return false; - } - } - - if (!upgrade.repeatable && hasUpgrade(ownedUpgrades, upgrade.name)) { - return false; - } - - return true; -} -``` - ---- - -### 12.3 获取可用强化池 - -```cpp -vector getAvailableUpgrades( - const vector& upgradePool, - const vector& ownedUpgrades -) { - vector available; - - for (const Upgrade& upgrade : upgradePool) { - if (canAppear(upgrade, ownedUpgrades)) { - available.push_back(upgrade); - } - } - - return available; -} -``` - ---- - -## 13. 强化池初始化示例 - -```cpp -void initUpgradePool(vector& upgradePool) { - upgradePool.push_back({ - "积分倍率", - "所有得分提高20%。", - UpgradeType::Score, - {UpgradeTag::Score}, - {}, - false, - true - }); - - upgradePool.push_back({ - "经验强化", - "消行获得的经验提高25%。", - UpgradeType::Growth, - {UpgradeTag::Exp}, - {}, - false, - true - }); - - upgradePool.push_back({ - "炸弹方块", - "每隔10个方块,生成一个炸弹方块。", - UpgradeType::Special, - {UpgradeTag::Bomb}, - {}, - false, - false - }); - - upgradePool.push_back({ - "连锁爆破", - "消行后,额外清除附近随机格子。", - UpgradeType::Clear, - {UpgradeTag::Bomb}, - {"炸弹方块"}, - false, - false - }); - - upgradePool.push_back({ - "连环炸弹", - "炸弹范围扩大,并在造成消行后触发二次爆炸。", - UpgradeType::Evolution, - {UpgradeTag::Bomb}, - {"炸弹方块", "连锁爆破"}, - true, - false - }); - - upgradePool.push_back({ - "激光方块", - "特殊方块落地后清除所在整列。", - UpgradeType::Special, - {UpgradeTag::Laser}, - {}, - false, - false - }); - - upgradePool.push_back({ - "雷霆四消", - "四消时额外清除随机2行。", - UpgradeType::Clear, - {UpgradeTag::Laser}, - {}, - false, - false - }); - - upgradePool.push_back({ - "雷霆激光", - "四消时额外发射2道激光,清除随机2列。", - UpgradeType::Evolution, - {UpgradeTag::Laser}, - {"激光方块", "雷霆四消"}, - true, - false - }); -} -``` - ---- - -## 14. 推荐实现优先级 - -### 14.1 必做内容 - -```text -经验升级 -随机三选一 -强化池 -强化前置条件 -玩家已拥有强化记录 -``` - ---- - -### 14.2 推荐实现内容 - -```text -炸弹方块 -激光方块 -狂热模式 -清屏炸弹 -5 个进化强化 -``` - ---- - -### 14.3 可选加分内容 - -```text -主动技能 -负面诅咒 -特殊视觉效果 -多流派成就 -强化稀有度 -``` - ---- - -## 15. 推荐最终实现组合 - -为了控制开发难度,建议优先实现以下 5 条路线: - -```text -1. 炸弹方块 + 连锁爆破 = 连环炸弹 -2. 激光方块 + 雷霆四消 = 雷霆激光 -3. 狂热模式 + 暴走堆叠 = 无限狂热 -4. 清屏炸弹 + 最后一搏 = 终末清场 -5. 赌徒 + 双重选择 = 命运轮盘 -``` - -这些路线辨识度高,爽感强,实现难度适中,适合作为 C++ 大作业的核心创新点。 - ---- - -## 16. 总结 - -本强化系统通过“基础强化、进阶强化、进化强化”三层结构,将传统俄罗斯方块的单局挑战扩展为具有成长路线和构筑策略的肉鸽玩法。 - -玩家不只是被动消行,而是可以围绕爆破流、雷电流、狂热流、操作流、赌徒流等方向进行构筑。不同强化之间的合成和联动提高了游戏的策略深度,也增强了每局游戏的随机性与爽感。