删除无用文件 整理README等文件

This commit is contained in:
2026-04-26 16:06:04 +08:00
parent 7db0bfadfc
commit 47ca7473ec
4 changed files with 290 additions and 293 deletions
+130 -89
View File
@@ -1,87 +1,121 @@
# Tereis
基于 C++、Win32 APIGDI/GDI+ 实现的俄罗斯方块课程大作业。
Tereis 是一个基于 C++、Win32 APIGDI/GDI+ 实现的桌面版俄罗斯方块课程大作业。
项目提供两种主要玩法:
项目在经典俄罗斯方块玩法上扩展了 Rogue 模式,加入等级成长、强化选择、主动技能、特殊方块、视频复活、鼠标交互和视觉特效。程序不依赖游戏引擎,主要使用 Win32 消息循环和 GDI 绘图完成。
- `经典模式`:标准俄罗斯方块,强调移动、旋转、消行和生存。
- `Rogue 模式`:在标准玩法基础上加入升级、强化、主动技能、危险等级和局内构筑。
## 功能概览
当前工程可直接在 Windows 下编译运行,适合作为课程展示、实验报告和源码答辩使用。
## 项目特点
- Win32 图形界面程序,不依赖第三方游戏引擎
- 支持键盘操作、暂停、重开和返回主菜单
- 支持主菜单、帮助页、升级选择界面和结算反馈
- Rogue 模式包含强化系统、主动技能和特殊方块机制
- 支持背景图、图标、背景音乐和视频复活功能
- 提供 MinGW 构建脚本,以及 VS Code / Dev-C++ 运行说明
## 当前已实现内容
### 1. 基础玩法
### 经典模式
- 标准俄罗斯方块规则
- 方块生成、移动、旋转、软降、硬降
- 碰撞检测、落地固定、消行、游戏结束判定
- 方块落地固定、消行、计分和死亡判定
- 预测落点显示
- 重新开始、暂停、返回菜单
- 暂停、重开、返回菜单
### 2. 界面与资源
### Rogue 模式
- 自定义窗口界面
- 图标资源
Rogue 模式是本项目的主要扩展玩法。
- 消行获得分数和 EXP
- EXP 满后进入强化选择界面
- 支持普通三选一强化
- 支持双重抉择,同屏选择两个强化
- 支持命运轮盘,同屏展示六个强化并选择两个
- 随时间提升危险等级,底部封锁区会压缩可用空间
- 支持多种强化联动和构筑方向
### 强化与技能
项目中包含多类强化效果:
- 基础成长:得分倍率、EXP 倍率、预览数量、下落速度调整
- 生存强化:最后一搏、时间缓流、稳定结构
- 主动技能:备用仓、清屏炸弹、黑洞奇点、空中换形
- 特殊方块:爆破核心、棱镜激光、十字方块、彩虹方块
- 进阶联动:连锁火花、连环炸弹、雷霆四消、雷霆棱镜
- 风险收益:高压悬赏、豪赌四消、极限玩家、赌徒契约
- 升级联动:双重抉择、命运轮盘、升级冲击波、进化冲击
具体效果可在游戏主菜单的 `帮助 -> 强化图鉴` 中查看。
### 鼠标交互
除键盘操作外,项目也支持鼠标点击:
- 主菜单项目可点击
- 帮助页项目可点击
- 升级卡片可点击选择
- 多选强化可点击标记
- 暂停和结算界面按钮可点击
- 非主菜单界面左上角有返回按钮,可点击回到主菜单
- 右下角音乐按钮可点击开关背景音乐
### 视听与资源
- 自定义图标
- 背景图片
- 背景音乐
- 帮助页与强化图鉴
- 消行和技能清除特效
- 死亡后可播放本地视频复活一次
### 3. Rogue 模式
## 操作说明
- EXP 与等级系统
- 三选一 / 六选二强化系统
- 升级后强化选择
- 危险等级和底部封锁区
- 主动技能:
- `C / Shift` 备用仓
- `Z` 黑洞奇点
- `X` 清屏炸弹
- `V` 空中换形
- 特殊方块与连锁效果:
- 爆破核心
- 棱镜激光
- 十字方块
- 彩虹方块
- 方块改造
### 通用键盘操作
### 4. 额外功能
| 按键 | 功能 |
| --- | --- |
| `← / A` | 左移 |
| `→ / D` | 右移 |
| `↑ / W` | 旋转 |
| `↓ / S` | 软降 |
| `Space` | 硬降 |
| `P` | 暂停 / 继续 |
| `R` | 重开当前对局 |
| `M` | 返回主菜单 |
- 死亡后看本地视频复活一次
- 消除与技能清除特效
- 升级冲击波 / 进化冲击等升级联动效果
### Rogue 模式额外按键
## 目录结构
| 按键 | 功能 |
| --- | --- |
| `C / Shift` | 备用仓 |
| `Z` | 黑洞奇点 |
| `X` | 清屏炸弹 |
| `V` | 空中换形 |
| 死亡后 `V` | 看视频复活一次 |
### 升级选择
- 普通升级:方向键 / WASD 切换,Enter 或 Space 确认
- 双重抉择 / 命运轮盘:Space 标记,Enter 确认已选强化
- 鼠标操作:直接点击升级卡片即可选择或标记
## 项目结构
```text
Tereis/
├─ src/
│ ├─ include/ 头文件
│ ├─ source/ 源文件
│ └─ resources/ Windows 资源文件
│ └─ resources/ Windows 资源脚本
├─ assets/
│ ├─ audio/ 音频资源
│ ├─ icons/ 图标资源
│ ├─ images/ 图片资源
│ └─ video/ 复活视频资源
├─ report/ 报告与整理材料
│ ├─ audio/ 背景音乐
│ ├─ icons/ 程序图标
│ ├─ images/ 背景图片
│ └─ video/ 复活视频
├─ report/ 报告相关材料
├─ .vscode/ VS Code 配置
├─ .vscode-build/ 本地构建输出目录
├─ build-mingw.ps1 MinGW 构建脚本
├─ README.md 项目说明
├─ VSCode运行说明.md VS Code 运行说明
└─ Dev-C++运行说明.md Dev-C++ 运行说明
├─ README.md 项目说明
├─ VSCode运行说明.md VS Code 构建运行说明
└─ Dev-C++运行说明.md Dev-C++ 兼容运行说明
```
## 环境要求
## 构建环境
推荐环境:
- Windows
- PowerShell
@@ -90,7 +124,11 @@ Tereis/
- `windres.exe`
- 如需调试:`gdb.exe`
脚本会优先使用系统 `PATH` 中的 MinGW如果没有加入 `PATH`也兼容常见安装路径 `C:\mingw64\bin\`
构建脚本会优先使用系统 `PATH` 中的 MinGW如果没有加入 `PATH`脚本也会尝试使用:
```text
C:\mingw64\bin\
```
## 构建与运行
@@ -100,63 +138,66 @@ Tereis/
powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1
```
构建成功后生成文件位于
构建成功后生成:
```text
.vscode-build\mingw\Tetris.exe
```
如果希望构建后直接运行:
构建后直接运行:
```powershell
powershell -NoProfile -ExecutionPolicy Bypass -File .\build-mingw.ps1 -Run
```
注意:
## 常见问题
- 如果提示 `Tetris.exe: Permission denied`,通常是程序还在运行,先关闭游戏窗口再重新构建。
- 项目依赖 `assets/` 下的图标、图片、音频和视频资源,提交或运行时不要删掉这些文件。
### 1. 提示 `Tetris.exe: Permission denied`
## 操作说明
说明游戏程序仍在运行,链接器无法覆盖旧文件。
### 通用操作
处理方式:
- `← / A`:左移
- `→ / D`:右移
- `↑ / W`:旋转
- `↓ / S`:软降
- `Space`:硬降
- `P`:暂停 / 继续
- `R`:重开当前对局
- `M`:返回主菜单
- 关闭正在运行的游戏窗口
- 重新执行构建命令
### Rogue 模式附加操作
### 2. 没有背景图、音乐或视频
- `C / Shift`:备用仓
- `Z`:黑洞奇点
- `X`:清屏炸弹
- `V`:空中换形
请确认运行时保留了 `assets/` 目录。项目会从资源目录读取背景、音乐和复活视频。
### 复活
### 3. 视频复活播放失败
- 死亡后按 `V` 播放本地视频,可复活一次
项目会优先查找:
## 文档说明
- `assets/video/video.avi`
- `assets/video/video.mp4`
- [VSCode运行说明.md](./VSCode运行说明.md):适合直接在 VS Code 中构建、运行和调试
- [Dev-C++运行说明.md](./Dev-C++运行说明.md):适合作为备用运行方案
- [report/list.md](./report/list.md):项目阶段清单
如果系统不支持对应格式,可能会播放失败。建议保留项目中已提供的视频文件。
### 4. 鼠标点击不生效
请确认运行的是最新构建结果。若构建时 `Tetris.exe` 被占用,实际运行的可能仍是旧版本。
## 课程展示建议
如果用于课堂演示,建议优先展示以下内容
建议按以下顺序展示
1. 主菜单帮助页
1. 主菜单帮助页和鼠标点击
2. 经典模式基础玩法
3. Rogue 模式升级界面
4. 特殊方块与主动技能
5. 视频复活功能
3. Rogue 模式升级选择
4. 双重抉择或命运轮盘的多选界面
5. 主动技能:黑洞、炸弹、换形、备用仓
6. 特殊方块和消除特效
7. 死亡后视频复活
## 说明
## 实现说明
本项目为课程设计 / 大作业用途,代码风格以过程式实现为主,便于和课程内容对照理解,不以复杂架构设计为目标。
本项目以过程式 C++ 写法为主,核心逻辑分布如下:
- `src/source/Tetris.cpp`:窗口、消息循环、输入和鼠标交互
- `src/source/TetrisLogic.cpp`:基础方块逻辑、消行和状态重置
- `src/source/TetrisRogue.cpp`:Rogue 模式、强化、技能和成长系统
- `src/source/TetrisRender.cpp`:界面绘制、面板、动画和特效
- `src/include/Tetris.h`:主要结构体、全局状态和函数声明
项目适合作为程序设计课程大作业展示,也便于在答辩时讲解窗口程序、游戏循环、碰撞检测、状态管理和功能扩展。