# 砖块破坏者 **Repository Path**: heliangHIT/brick-destroyer ## Basic Information - **Project Name**: 砖块破坏者 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-21 - **Last Updated**: 2025-12-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 砖块破坏者游戏 🎮 一个基于 Pygame 开发的经典砖块破坏游戏,具有丰富的关卡系统、音效和进度保存功能。 ## 游戏特色 ✨ ### 核心功能 - **20个精心设计的关卡**:难度逐级递增,挑战性十足 - **关卡选择系统**:通过快捷键快速访问任意关卡 - **进度持久化**:自动保存通关记录到本地 - **完整音效系统**:背景音乐、击中音效、分裂音效等 ### 游戏机制 - **小球分裂**:击破砖块有概率触发小球分裂,概率随关卡递增 - **不可破坏墙壁**:灰色墙壁无法摧毁,只能反弹 - **多生命值砖块**:不同颜色代表不同生命值 - 🟢 绿色:1点生命值 - 🟠 橙色:2点生命值 - 🔴 红色:3点生命值 - 🟣 紫色:4点生命值 - ⬛ 深灰色(带X):不可破坏的墙壁 ### 难度递增设计 - 砖块数量逐渐增多(3x8 → 8x12) - 不可破坏墙壁数量增加(0 → 9个) - 小球分裂概率提升(5% → 40%) - 小球速度加快(5.0 → 10.7) - 挡板宽度缩小(100 → 60) ## 安装说明 📦 ### 环境要求 - Python 3.7+ - Pygame 2.0+ - NumPy 1.20+ ### 安装步骤 1. **克隆或下载项目** ```bash cd 砖块破坏者 ``` 2. **安装依赖** ```bash pip install -r requirements.txt ``` 3. **生成游戏资源**(如果尚未生成) ```bash # 生成音效文件 python generate_sounds.py # 生成关卡配置文件 python generate_levels.py ``` 4. **启动游戏** ```bash python main.py ``` ## 游戏操作 🎯 ### 主菜单 - **SPACE** - 开始游戏(从第1关开始) - **L** - 打开关卡选择面板 ### 游戏中 - **← → 或 A D** - 左右移动挡板 - **L** - 打开关卡选择面板 - **ESC** - 返回主菜单 ### 关卡选择 - **方向键 ↑↓←→** - 选择关卡 - **SPACE** - 开始选中的关卡 - **ESC** - 返回主菜单 ### 关卡状态 - **绿色边框** - 已通关的关卡 - **白色边框** - 未通关的关卡 - **黄色边框** - 当前选中的关卡 ## 项目结构 📁 ``` 砖块破坏者/ ├── main.py # 游戏主程序 ├── generate_sounds.py # 音效生成脚本 ├── generate_levels.py # 关卡配置生成脚本 ├── requirements.txt # Python依赖 ├── README.md # 项目文档 ├── progress.json # 通关进度(自动生成) ├── levels/ # 关卡配置目录 │ ├── level_1.json # 第1关配置 │ ├── level_2.json # 第2关配置 │ └── ... # 共20个关卡 └── sounds/ # 音效文件目录 ├── brick_hit.wav # 击中砖块音效 ├── wall_hit.wav # 击中墙壁音效 ├── split.wav # 小球分裂音效 ├── background_music.wav # 背景音乐 ├── level_complete.wav # 关卡完成音效 └── game_over.wav # 游戏结束音效 ``` ## 关卡配置说明 ⚙️ 每个关卡通过 JSON 文件配置,包含以下参数: ```json { "level": 1, "name": "第1关", "ball_speed": 5.0, "split_probability": 0.05, "paddle_width": 100, "brick_rows": 3, "brick_cols": 8, "bricks": [ {"row": 0, "col": 0, "hp": 1} ], "indestructible_walls": [ {"row": 2, "col": 3} ] } ``` ### 参数说明 - `ball_speed` - 小球速度 - `split_probability` - 小球分裂概率(0-1之间) - `paddle_width` - 挡板宽度 - `bricks` - 砖块位置和生命值 - `indestructible_walls` - 不可破坏墙壁的位置 ## 音效系统 🔊 游戏使用 NumPy 生成的程序化音效: - **brick_hit.wav** - 击中砖块(清脆的高频音) - **wall_hit.wav** - 击中墙壁/边界(低沉的反弹音) - **split.wav** - 小球分裂(上升音调扫描) - **background_music.wav** - 背景音乐(简单和弦循环) - **level_complete.wav** - 关卡完成(欢快的上升音阶) - **game_over.wav** - 游戏结束(下降音调) 可以通过修改 `generate_sounds.py` 自定义音效。 ## 自定义关卡 🛠️ 你可以通过以下方式自定义关卡: 1. **修改现有关卡**:直接编辑 `levels/level_X.json` 文件 2. **批量生成新关卡**:修改 `generate_levels.py` 中的参数后重新运行 3. **添加新关卡**:创建新的 JSON 文件,按照格式填写配置 ## 游戏截图 🖼️ 游戏包含以下界面: - 主菜单界面 - 游戏进行界面 - 关卡选择界面(4x5网格布局) - 游戏结束界面 - 关卡完成界面 ## 技术实现 💻 ### 核心技术 - **Pygame** - 游戏引擎和图形渲染 - **NumPy** - 音效波形生成 - **JSON** - 关卡配置和进度保存 ### 物理引擎 - 基于速度向量的小球运动 - 圆形与矩形的碰撞检测 - 根据击中位置调整反弹角度 ### 游戏状态管理 ``` menu → playing ↔ level_select ↑ ↓ └── game_over / level_complete ``` ## 开发说明 👨‍💻 ### 重新生成资源 如果需要重新生成音效或关卡: ```bash # 重新生成音效 python generate_sounds.py # 重新生成20个关卡 python generate_levels.py ``` ### 调整游戏参数 在 `main.py` 中可以调整以下常量: ```python SCREEN_WIDTH = 800 # 窗口宽度 SCREEN_HEIGHT = 600 # 窗口高度 FPS = 60 # 帧率 BRICK_WIDTH = 60 # 砖块宽度 BRICK_HEIGHT = 20 # 砖块高度 BALL_RADIUS = 8 # 小球半径 PADDLE_HEIGHT = 15 # 挡板高度 ``` ## 常见问题 ❓ ### Q: 中文显示为方块怎么办? A: 游戏会自动尝试加载系统中文字体(微软雅黑、宋体等),如果仍有问题,请确保系统已安装中文字体。 ### Q: 没有声音怎么办? A: 请确保已运行 `python generate_sounds.py` 生成音效文件,并检查系统音量设置。 ### Q: 如何重置游戏进度? A: 删除项目根目录下的 `progress.json` 文件即可。 ### Q: 可以修改关卡数量吗? A: 可以修改 `generate_levels.py` 中的循环范围,然后重新运行脚本生成新的关卡数量。 ## 贡献指南 🤝 欢迎提交问题和改进建议! ## 许可证 📄 本项目仅供学习和娱乐使用。 ## 更新日志 📝 ### v1.0.0 (2025-12-21) - ✅ 实现基础游戏逻辑 - ✅ 添加20个难度递增的关卡 - ✅ 实现关卡选择和进度保存 - ✅ 添加完整音效系统 - ✅ 支持中文字体显示 - ✅ 程序化音效生成 ## 致谢 🙏 - 感谢 Pygame 社区提供的优秀游戏引擎 - 灵感来源于经典的砖块破坏游戏 --- **享受游戏吧!** 🎉