From 7fe0244a99ad287547fe3743a55045b3c8325629 Mon Sep 17 00:00:00 2001 From: qihuanye <2728290997@qq.com> Date: Wed, 29 Apr 2026 15:56:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dev-C++运行说明.md | 138 ------------------- README.md | 121 ++++++++++++++++- TODO.md | 331 --------------------------------------------- VSCode运行说明.md | 147 -------------------- 4 files changed, 119 insertions(+), 618 deletions(-) delete mode 100644 Dev-C++运行说明.md delete mode 100644 TODO.md delete mode 100644 VSCode运行说明.md diff --git a/Dev-C++运行说明.md b/Dev-C++运行说明.md deleted file mode 100644 index 2a2b1dd..0000000 --- a/Dev-C++运行说明.md +++ /dev/null @@ -1,138 +0,0 @@ -# Dev-C++ 运行说明 - -本项目可以尝试在 Dev-C++ 中运行,但更推荐使用 VS Code 和 `build-mingw.ps1` 脚本。Dev-C++ 对资源文件、Unicode 入口和链接库的处理更容易出现环境差异。 - -## 1. 工程类型 - -新建工程时请选择: - -```text -Windows Application -``` - -不要选择控制台程序。 - -## 2. 需要加入工程的源码 - -源文件: - -```text -src/source/stdafx.cpp -src/source/Tetris.cpp -src/source/TetrisLogic.cpp -src/source/TetrisRender.cpp -src/source/TetrisRogue.cpp -``` - -头文件目录: - -```text -src/include -``` - -建议把以下头文件加入工程树,便于查看: - -```text -src/include/stdafx.h -src/include/Tetris.h -src/include/TetrisLogicInternal.h -src/include/targetver.h -src/include/resource.h -``` - -## 3. 资源文件 - -资源文件为: - -```text -src/resources/Tetris.rc -``` - -如果 Dev-C++ 能正常编译资源,可以加入该文件。 -如果资源编译失败,可以先不加入资源文件,只编译 C++ 源码。这样程序主体仍可运行,但图标、菜单等资源可能不完整。 - -## 4. 编译设置 - -建议: - -- C++ 标准:`C++17` -- 工程类型:Windows 程序 -- 字符集:Unicode - -建议预处理宏: - -```text -UNICODE -_UNICODE -_WINDOWS -``` - -建议编译 / 链接参数: - -```text --mwindows --municode -``` - -## 5. 链接库 - -需要链接以下库: - -```text -winmm -gdi32 -user32 -comdlg32 -ole32 -gdiplus -shell32 -``` - -如果出现 `undefined reference`,优先检查这些库是否正确加入。 - -## 6. 资源目录 - -运行时请保留: - -```text -assets/icons/ -assets/images/ -assets/audio/ -assets/video/ -``` - -这些资源用于: - -- 程序图标 -- 背景图片 -- 背景音乐 -- 视频复活 - -如果工作目录设置不正确,程序可能找不到这些资源。 - -## 7. 常见问题 - -### 资源文件编译失败 - -Dev-C++ 的 `windres` 对资源文件编码和路径比较敏感。可以先不加入 `Tetris.rc`,或者改用项目自带脚本构建。 - -### 无法识别 `_tWinMain` - -说明工程类型或 Unicode 参数不正确。请确认使用 Windows Application,并启用 Unicode 相关宏和 `-municode`。 - -### 背景、音乐或视频缺失 - -说明运行目录找不到 `assets/`。建议从项目根目录运行,或保持 exe 与资源目录的相对位置。 - -### 链接失败 - -检查是否加入了 `winmm`、`gdiplus`、`shell32` 等库。 - -## 8. 建议 - -Dev-C++ 适合作为备用运行方式。 -如果要稳定构建、调试和课堂展示,建议优先使用: - -```powershell -powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 -``` diff --git a/README.md b/README.md index a4ea24c..5e5ef55 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,31 @@ Tereis 是一个基于 C++、Win32 API、GDI/GDI+ 实现的桌面版俄罗斯方 项目在经典俄罗斯方块玩法上扩展了 Rogue 模式,加入等级成长、强化选择、主动技能、特殊方块、视频复活、鼠标交互和视觉特效。程序不依赖游戏引擎,主要使用 Win32 消息循环和 GDI 绘图完成。 +## 快速运行 + +推荐在 Windows + PowerShell + MinGW-w64 环境下运行。 + +1. 确认 `g++.exe` 和 `windres.exe` 已加入 `PATH`,或安装在 `C:\mingw64\bin\`。 +2. 在项目根目录执行构建并运行: + +```powershell +powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 -Run +``` + +3. 如只需构建,不启动程序: + +```powershell +powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 +``` + +构建产物位于: + +```text +.vscode-build\mingw\Tetris.exe +``` + +运行时请从项目根目录启动程序,确保 `assets/` 目录可被读取,否则背景图、音乐和复活视频可能无法加载。 + ## 功能概览 ### 经典模式 @@ -91,6 +116,85 @@ Rogue 模式是本项目的主要扩展玩法。 - 双重抉择 / 命运轮盘:Space 标记,Enter 确认已选强化 - 鼠标操作:直接点击升级卡片即可选择或标记 +## 运行说明 + +### 方式一:PowerShell 一键运行 + +在项目根目录打开 PowerShell,执行: + +```powershell +powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 -Run +``` + +该命令会先编译项目,编译成功后自动启动游戏窗口。 + +### 方式二:先构建再运行 + +先在项目根目录执行构建: + +```powershell +powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 +``` + +构建成功后运行生成的程序: + +```powershell +.\.vscode-build\mingw\Tetris.exe +``` + +### 方式三:VS Code 运行和调试 + +项目已经配置好 VS Code 任务: + +- 按 `Ctrl + Shift + B` 执行默认构建任务 `build Tetris MinGW` +- 在任务列表中运行 `run Tetris MinGW` 可构建并启动游戏 +- 在“运行和调试”中选择 `Debug Tetris MinGW` 可启动调试 + +调试需要系统能找到 `gdb.exe`。如果无法调试,请确认 MinGW 的 `bin` 目录已经加入 `PATH`。 + +### 方式四:Visual Studio 中运行 + +本项目没有提供 Visual Studio 的 `.sln` 或 `.vcxproj` 工程文件,推荐在 Visual Studio 中打开项目文件夹,然后通过终端调用已有构建脚本运行。 + +操作步骤: + +1. 打开 Visual Studio。 +2. 选择 `文件 -> 打开 -> 文件夹`,打开项目根目录 `Tereis`。 +3. 打开 Visual Studio 内置终端,或在项目根目录单独打开 PowerShell。 +4. 确认 MinGW-w64 已安装,并且 `g++.exe`、`windres.exe` 可以被系统找到。 +5. 在终端中执行: + +```powershell +powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 -Run +``` + +如果只想编译,不立即运行: + +```powershell +powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 +``` + +编译成功后,程序位置为: + +```text +.vscode-build\mingw\Tetris.exe +``` + +也可以在 Visual Studio 的终端中运行: + +```powershell +.\.vscode-build\mingw\Tetris.exe +``` + +注意:不要直接把 `src` 目录中的单个 `.cpp` 文件当作独立程序运行。本项目由多个源文件、资源文件和 `assets/` 资源目录共同组成,必须通过项目根目录下的 `build-mingw.ps1` 构建。 + +### 运行注意事项 + +- 推荐始终从项目根目录启动程序。 +- 不建议直接双击 `.vscode-build\mingw\Tetris.exe`,因为工作目录可能不正确,导致 `assets/` 资源加载失败。 +- 如果重新构建时提示 `Tetris.exe: Permission denied`,请先关闭正在运行的游戏窗口。 +- 程序使用 Win32 桌面窗口运行,不会显示控制台窗口。 + ## 项目结构 ```text @@ -118,8 +222,7 @@ Tereis/ ├─ .vscode-build/ 本地构建输出目录 ├─ build-mingw.ps1 MinGW 构建脚本 ├─ README.md 项目说明 -├─ VSCode运行说明.md VS Code 构建运行说明 -└─ Dev-C++运行说明.md Dev-C++ 兼容运行说明 +└─ AGENTS.md 项目协作和代码生成约束 ``` ## 构建环境 @@ -161,6 +264,20 @@ powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 -Run ``` +也可以直接运行已生成的程序: + +```powershell +.\.vscode-build\mingw\Tetris.exe +``` + +如果使用 VS Code: + +- `Ctrl + Shift + B` 执行默认构建任务 `build Tetris MinGW` +- 运行任务 `run Tetris MinGW` 可构建并启动游戏 +- 调试配置 `Debug Tetris MinGW` 会先构建,再使用 `gdb.exe` 启动调试 + +注意:直接双击 `.vscode-build\mingw\Tetris.exe` 时,当前工作目录可能不是项目根目录,资源文件可能无法正常读取。推荐从项目根目录通过脚本或 VS Code 任务启动。 + ## 常见问题 ### 1. 提示 `Tetris.exe: Permission denied` diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 63c6aab..0000000 --- a/TODO.md +++ /dev/null @@ -1,331 +0,0 @@ -# Rogue 事件系统 TODO 评估 - -本文档用于整理后续 Rogue 随机事件方向,先做设计评估,不进入代码实现。 - -当前项目已经具备的基础: - -- `workRegion[20][10]` 棋盘格,可直接做障碍、垃圾行、局部清除、压实等棋盘改动。 -- Rogue 模式已有危险等级、底部封锁行、下落速度变化、强化池、主动技能、特殊方块、Hold、Next 预览。 -- 消行结算、方块生成、计时器、渲染反馈已经集中在少数文件中,适合加一层“事件状态 + 事件调度”。 - -当前项目暂缺的基础: - -- 没有通用随机事件调度器。 -- 棋盘格目前主要用数字表示普通方块/彩虹方块,缺少石头、污染、尖刺、锁链、目标块等细分格子类型。 -- 不规划 Boss/敌人系统;事件只作为 Rogue 随机事件存在。 -- 没有完整的事件 UI 状态栏、倒计时提示和事件历史展示。 - -## 第一阶段:最适合当前项目,优先考虑 - -这些事件基本能复用现有棋盘、计时、方块生成、Hold/Next、消行和反馈系统,改动相对可控。 - -- [ ] 底部随机升起:底部生成 1-3 行障碍,带少量空洞。 - - 适合度:高。 - - 原因:类似垃圾行,可直接移动棋盘并填充底部。 - - 注意:需要避免无预警秒杀,可加 2-3 秒提示。 - -- [ ] 墙体收缩:左右各封锁 1 列,持续 20 秒。 - - 适合度:高。 - - 原因:已有底部封锁概念,可扩展为临时左右边界。 - - 注意:碰撞、落点、渲染都要读取临时边界,避免只画不挡。 - -- [ ] 断层错位:随机选择几行,整体左/右平移 1 格。 - - 适合度:高。 - - 原因:直接操作 `workRegion` 行数据。 - - 注意:边缘溢出的格子如何处理需要规则化,建议溢出消失或反向空洞补位。 - -- [ ] 塌方:场上悬空方块向下坠落,重新压实。 - - 适合度:高。 - - 原因:项目已有 `ApplyBoardGravity()`,可复用或扩展。 - - 注意:作为负面事件时可能反而帮助玩家,需要定位为混合事件。 - -- [ ] 地刺:底部若干格变成尖刺,占位但可被消行清除。 - - 适合度:中高。 - - 原因:本质是特殊障碍格。 - - 注意:需要新增格子类型和渲染颜色,但规则简单。 - -- [ ] 封印列:某一列暂时不能放置方块,持续数个方块。 - - 适合度:高。 - - 原因:可通过碰撞检测禁止当前方块固定到该列。 - - 注意:需要明确“不能经过”还是“不能落地占用”,建议先做“不能落地占用”。 - -- [ ] 强风:当前方块每隔 1 秒自动向左/右偏移。 - - 适合度:高。 - - 原因:已有左右移动和计时器。 - - 注意:偏移前必须做碰撞检测;建议只作用于活动方块。 - -- [ ] 重力紊乱:方块下落速度周期性忽快忽慢。 - - 适合度:高。 - - 原因:已有 `currentFallInterval` 和 Rogue 下落速度计算。 - - 注意:需要避免与狂热、时间缓流等强化互相覆盖。 - -- [ ] 旋转失灵:每隔一个方块,有一个方块不能旋转。 - - 适合度:高。 - - 原因:只需在 `Rotate()` 入口判断事件状态。 - - 注意:UI 要明确提示,避免像输入失效。 - -- [ ] 镜像操作:左右移动反转,持续 10 秒。 - - 适合度:高。 - - 原因:输入分发处交换左右移动即可。 - - 注意:鼠标或未来触控输入也要统一处理。 - -- [ ] 粘滞空气:横移延迟增加,持续 15 秒。 - - 适合度:中。 - - 原因:当前键盘输入看起来偏即时响应,若没有 DAS/ARR 机制,需要先补横移节流。 - - 注意:实现成本比描述略高。 - -- [ ] 超重方块:当前方块落地后锁定时间大幅缩短。 - - 适合度:中。 - - 原因:若当前没有锁定延迟,需要先引入 lock delay。 - - 注意:没有锁定延迟时可以降级为“触底立即固定”。 - -- [ ] 长条枯竭:一段时间内 I 方块出现率降低。 - - 适合度:高。 - - 原因:已有 Rogue 方块权重生成。 - - 注意:不要完全禁用 I,避免体验过硬。 - -- [ ] 蛇群:接下来 6 个方块更容易出现 S/Z。 - - 适合度:高。 - - 原因:同样是方块生成权重调整。 - -- [ ] 小块雨:连续掉落若干 1x1 或 1x2 小块。 - - 适合度:中高。 - - 原因:可以作为特殊临时方块池。 - - 注意:现有方块数组是 7 种 4x4,需要扩展临时形状或伪装为特殊类型。 - -- [ ] 石化块:接下来 3 个方块落地后部分格子变石头。 - - 适合度:中高。 - - 原因:固定阶段可替换格子类型。 - - 注意:需要新增石头格规则:是否可消行、是否可被技能清除。 - -- [ ] 幽灵块:方块预览正常,但落下时形状随机变化一次。 - - 适合度:中高。 - - 原因:消费 Next 后替换当前 `type`。 - - 注意:变化后要重新校验出生位置,避免直接死亡。 - -- [ ] 高压:30 秒内必须消除 4 行,否则加垃圾行。 - - 适合度:高。 - - 原因:已有总消行统计和计时器。 - - 注意:要记录事件期间消行数,不用全局总数直接判断。 - -- [ ] 单消惩罚:单行消除会额外生成 1 行垃圾。 - - 适合度:高。 - - 原因:接在消行结算后处理。 - - 注意:对新手很重,适合短持续或中后期。 - -- [ ] 禁止四消:四消不会得分,反而生成障碍,短期事件。 - - 适合度:中高。 - - 原因:消行奖励处可拦截。 - - 注意:与现有“雷霆四消/赌命四消”强化冲突,需要定义优先级。 - -- [ ] Hold 冻结:暂时无法使用 Hold。 - - 适合度:高。 - - 原因:`HoldCurrentPiece()` 可直接判断事件状态。 - -- [ ] 幽灵落点失效:影子落点隐藏。 - - 适合度:高。 - - 原因:渲染处跳过落点绘制。 - -- [ ] 预览故障:Next 队列隐藏或随机显示假预览。 - - 适合度:中高。 - - 原因:渲染和实际队列分离即可。 - - 注意:假预览要清楚是事件效果,否则会像 bug。 - -- [ ] 盲盒方块:下一个方块落下前不显示形状。 - - 适合度:高。 - - 原因:比假预览更简单,只隐藏下一块显示。 - -- [ ] 色彩错乱:方块颜色随机打乱,影响识别。 - - 适合度:高。 - - 原因:只影响渲染颜色表映射。 - -- [ ] 强化过热:主动技能冷却或充能需求翻倍,持续 30 秒。 - - 适合度:中高。 - - 原因:已有清屏炸弹、黑洞、空中换形等主动能力。 - - 注意:当前更像次数/充能,不一定是冷却;描述可改为“充能需求提高”。 - -- [ ] 能量泄露:玩家能量条持续下降,消行可补充。 - - 适合度:中。 - - 原因:当前没有统一能量条,但有技能充能概念。 - - 注意:除非先做能量资源,否则建议暂缓。 - -- [ ] 装备短路:随机一个强化暂时失效。 - - 适合度:中高。 - - 原因:已有强化等级字段,可加临时禁用表。 - - 注意:需要避免禁用核心 UI/基础能力导致解释困难。 - -- [ ] 贪婪试炼:期间消行奖励翻倍,但每 10 秒加 1 行垃圾。 - - 适合度:高。 - - 原因:得分/经验倍率和垃圾行都能复用。 - -- [ ] 混乱祝福:下落速度提高,但消行奖励翻倍。 - - 适合度:高。 - - 原因:与当前 Rogue 风险收益强化风格一致。 - -- [ ] 危险长条:下一个必定是 I,但落地后生成 1 行垃圾。 - - 适合度:高。 - - 原因:直接改 Next 队列并挂一个落地后副作用。 - -- [ ] 猎杀时刻:生成目标块,清除后给奖励,失败则加障碍。 - - 适合度:中高。 - - 原因:需要目标格类型,但玩法清晰,展示效果好。 - -- [ ] 极限压缩:场地高度降低,但所有消行计为双倍。 - - 适合度:中高。 - - 原因:已有底部封锁和奖励计算。 - - 注意:与常驻危险等级封锁叠加时要设上限。 - -## 第二阶段:可做,但需要先补系统能力 - -这些事件有价值,但依赖特殊格子、持续状态、倒计时 UI、事件优先级或更复杂的结算顺序。 - -- [ ] 裂缝:随机列变成危险列,若 10 秒内没消除该列附近,会生成障碍。 - - 依赖:危险列标记、倒计时、附近消行判定。 - -- [ ] 污染区:随机 3x3 区域被污染,污染格消除后会扩散一次。 - - 依赖:污染格类型、扩散结算、特殊渲染。 - - 风险:规则复杂,容易和普通消行/技能清除冲突。 - -- [ ] 脆弱方块:当前方块每旋转一次,随机掉落一个单格碎片。 - - 依赖:活动方块局部拆分或生成独立固定格。 - - 风险:要定义碎片是否立即固定、是否触发消行。 - -- [ ] 磁力干扰:方块靠近障碍块时会被吸附,加速锁定。 - - 依赖:障碍格类型、锁定延迟或特殊横移规则。 - - 风险:玩家可读性较差。 - -- [ ] 巨型块:下一个方块变成五格或六格异形块。 - - 依赖:扩展方块形状系统。 - - 风险:现有 `bricks[7][4][4][4]` 固定为 7 种,需要重构或另建临时形状。 - -- [ ] 爆裂块:下一个方块落地后随机炸掉相邻格子,可能好也可能坏。 - - 依赖:落地后局部爆破和反馈。 - - 备注:已有爆破核心,可复用特效和清除函数。 - -- [ ] 锁链块:方块落地后被锁住,只有相邻消行才能解除。 - - 依赖:锁链格类型、相邻消行判定。 - - 风险:若锁住后不能正常消行,规则会很绕。 - -- [ ] 连击试炼:规定时间内保持连击,断连则触发惩罚。 - - 依赖:连击生命周期定义。 - - 备注:已有 `comboChain`,但需要确认何时断连。 - -- [ ] 精准清理:只有消除指定发光行才算有效消行。 - - 依赖:目标行标记、奖励过滤。 - - 风险:需要处理非目标行消除是否仍清棋盘。 - -- [ ] 过载清除:消行后不会立即消失,而是延迟 2 秒,期间仍占位。 - - 依赖:延迟消行队列。 - - 风险:会影响核心俄罗斯方块节奏,改动较大。 - -- [ ] 腐蚀行:某些行如果长期不被消除,会逐渐变成石头。 - - 依赖:按行计时、石头格类型。 - -- [ ] 献祭规则:每消 3 行会摧毁一个随机强化效果,持续短时间。 - - 依赖:强化临时禁用/降级机制。 - - 风险:永久摧毁太重,建议先做短时封印。 - -- [ ] 迷雾:只显示当前方块附近区域。 - - 依赖:渲染遮罩。 - - 风险:实现不难,但视觉遮挡强,需要短时使用。 - -- [ ] 倒计时遮蔽:场地部分区域被 UI 遮挡,数秒后消失。 - - 依赖:渲染遮罩和事件 UI。 - - 风险:可能被认为是不公平遮挡。 - -- [ ] 假警报:显示即将生成垃圾行的预警,但部分是假的。 - - 依赖:预警 UI 和真假队列。 - - 风险:需要先有稳定的真实预警系统。 - -- [ ] 诅咒回响:最近一次选择的强化产生副作用。 - - 依赖:记录最近强化、为每类强化配置副作用。 - - 风险:内容量较大。 - -- [ ] 保险失效:复活、护盾、防死类强化暂时不可用。 - - 依赖:临时禁用强化系统。 - - 备注:当前已有复活/最后一搏类能力,适合在禁用系统完成后做。 - -- [ ] 超载窗口:所有强化效果增强,但结束后生成大量垃圾行。 - - 依赖:强化倍率覆盖层。 - - 风险:需要为每个强化定义“增强”含义。 - -- [ ] 债务事件:立刻获得奖励,但未来 60 秒内难度提高。 - - 依赖:奖励发放、难度临时增益。 - - 备注:适合作为事件选择,而不是无条件负面事件。 - -- [ ] 不稳定炸弹:给一个炸弹块,能清障碍,但倒计时结束会爆坏场地。 - - 依赖:临时特殊方块、倒计时、坏爆炸规则。 - -- [ ] 交易事件:牺牲一个强化,换取清屏/降难度。 - - 依赖:事件选择 UI、强化移除或临时禁用。 - -- [ ] 祝福陷阱:获得临时强力效果,结束后触发一次负面事件。 - - 依赖:事件链和延迟触发。 - -## 第三阶段:攻击型随机事件,可选做 - -这些事件原本偏“敌人攻击”风格,但本项目不做 Boss 机制。若保留,只作为普通随机事件触发,不做血量、阶段、护盾和敌人 UI。 - -- [ ] 炮击:指定列被标记,数秒后生成障碍块。 - - 适合度:中高。 - - 备注:可以和裂缝共用“列预警 + 延迟生成障碍”的逻辑。 - -- [ ] 毒液喷洒:随机格变污染块,消行时才清除。 - - 适合度:中。 - - 备注:依赖污染格系统。 - -- [ ] 目标块入侵:场上出现几个需要消行击破的目标块。 - - 适合度:中。 - - 备注:可复用猎杀时刻目标块。 - -- [ ] 护盾阶段:不做。 - - 原因:依赖 Boss 血量、阶段和伤害规则,已经超出当前项目方向。 - -- [ ] 反击规则:玩家每次消行,额外生成 1 行垃圾。 - - 适合度:中。 - - 备注:可作为短时高压事件,但要避免和“单消惩罚”重复。 - -- [ ] 蓄力攻击:倒计时结束后生成大量垃圾,消行可延缓倒计时。 - - 适合度:中高。 - - 备注:作为普通倒计时事件即可。 - -- [ ] 寄生核心:一个核心块出现,每隔一段时间向周围扩散障碍。 - - 依赖:核心格、扩散逻辑、清除判定。 - -- [ ] 锁定轰炸:玩家最近放置最多的列被优先攻击。 - - 依赖:记录落子列热度。 - - 备注:可作为高级普通事件。 - -## 建议实现顺序 - -- [ ] 设计并新增 `RogueEventState`:当前事件、剩余时间、剩余方块数、事件参数、临时倍率、禁用标记。 -- [ ] 新增事件调度入口:只在 Rogue 模式中按时间/危险等级触发,避免经典模式受影响。 -- [ ] 新增事件提示 UI:事件名、剩余秒数、简短效果;先用右侧反馈面板,不做复杂界面。 -- [ ] 先完成 6 个低风险事件作为 MVP: - - [ ] 底部随机升起 - - [ ] 强风 - - [ ] 重力紊乱 - - [ ] 镜像操作 - - [ ] 长条枯竭 - - [ ] 高压 -- [ ] 再完成 4 个能体现肉鸽取舍的混合事件: - - [ ] 贪婪试炼 - - [ ] 混乱祝福 - - [ ] 危险长条 - - [ ] 极限压缩 -- [ ] 然后补特殊格子系统: - - [ ] 石头格 - - [ ] 尖刺格 - - [ ] 污染格 - - [ ] 目标格 - - [ ] 锁链格 -- [ ] 特殊格子系统稳定后,再做污染、猎杀、寄生核心、锁链块、石化块。 -- [ ] 攻击型随机事件最后做;如果时间有限,只保留“炮击/蓄力攻击/锁定轰炸”三个最容易解释的事件。 - -## 不建议优先做的事件 - -- [ ] 过载清除:会改动消行核心节奏,容易引入状态错乱。 -- [ ] 巨型块:需要扩展方块数据结构,投入高。 -- [ ] 磁力干扰:可读性弱,调参成本高。 -- [ ] 倒计时遮蔽:玩家体验可能偏负面。 -- [ ] 护盾阶段:需要 Boss 血量和阶段机制,当前项目明确不做。 diff --git a/VSCode运行说明.md b/VSCode运行说明.md deleted file mode 100644 index e319366..0000000 --- a/VSCode运行说明.md +++ /dev/null @@ -1,147 +0,0 @@ -# VS Code 运行说明 - -本项目推荐使用 `VS Code + MinGW-w64 + PowerShell` 构建和调试。 - -## 1. 环境准备 - -需要安装: - -- Visual Studio Code -- Microsoft C/C++ 扩展 -- MinGW-w64 -- PowerShell - -MinGW 中至少需要: - -- `g++.exe` -- `windres.exe` -- `gdb.exe`,仅调试时需要 - -## 2. 打开项目 - -请在 VS Code 中打开项目根目录,也就是包含以下文件和目录的位置: - -```text -build-mingw.ps1 -src/ -assets/ -.vscode/ -README.md -``` - -不要只打开 `src/` 子目录,否则 VS Code 任务和调试配置无法正常工作。 - -## 3. 使用 VS Code 任务构建 - -按: - -```text -Ctrl + Shift + B -``` - -默认会执行项目中的 MinGW 构建任务。 - -也可以打开命令面板,选择: - -```text -Tasks: Run Task -``` - -然后运行: - -- `build Tetris MinGW` -- `run Tetris MinGW` - -## 4. 使用命令行构建 - -在 VS Code 终端中进入项目根目录,执行: - -```powershell -powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 -``` - -构建后直接运行: - -```powershell -powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 -Run -``` - -## 5. 调试 - -按 `F5`,选择: - -```text -Debug Tetris MinGW -``` - -调试配置会先构建项目,再启动: - -```text -.vscode-build\mingw\Tetris.exe -``` - -如果提示找不到 `gdb.exe`,说明 MinGW 的调试器没有安装或没有加入 `PATH`。 - -## 6. 构建输出 - -最终程序: - -```text -.vscode-build\mingw\Tetris.exe -``` - -构建中间文件: - -```text -.vscode-build\mingw\Tetris.utf8.rc -.vscode-build\mingw\Tetris.res.o -``` - -这些中间文件不需要手动维护。 - -## 7. 资源文件 - -项目运行依赖: - -```text -assets/icons/ -assets/images/ -assets/audio/ -assets/video/ -``` - -如果只移动 `Tetris.exe` 而不带 `assets/`,会影响背景图、音乐和视频复活功能。 - -## 8. 常见问题 - -### 找不到 `g++.exe` - -处理方式: - -- 将 MinGW 的 `bin` 目录加入系统 `PATH` -- 或将 MinGW 安装到 `C:\mingw64\bin\` - -### 找不到 `windres.exe` - -资源文件无法编译,图标和菜单资源可能缺失。请检查 MinGW 安装是否完整。 - -### `Tetris.exe: Permission denied` - -说明程序正在运行,构建时无法覆盖旧 exe。 - -处理方式: - -1. 关闭游戏窗口 -2. 重新构建 - -### 鼠标点击、按钮或界面不是最新版 - -通常是因为构建失败后仍在运行旧 exe。请确认构建命令成功完成。 - -## 9. 推荐运行流程 - -1. 打开项目根目录 -2. 关闭旧的游戏窗口 -3. 执行构建 -4. 运行 `.vscode-build\mingw\Tetris.exe` -5. 如果要调试,按 `F5`