- 关卡1 (War): 背景
stage_bg_war.png,敌人为 angler 和 crab,通关条件为 Power 达到 300
- 关卡2 (Magic): 背景
stage_bg_magic.png,敌人为 angler、crab 和 Ghost Boss,通关条件为 Power 达到 350 且击败 Ghost
- 关卡3 (Gold): 背景
stage_bg_gold.png,敌人为 angler、crab 和 Turtle Boss,通关条件为 Power 达到 350 且击败 Turtle
- 单张
choose_stage.png,左右中三等分区域对应关卡 1/2/3
- 点击区域切换关卡,点击开始按钮进入存档选择
- 选中区域浅白描边高亮,未选区域覆盖极浅黑蒙版
- 每个关卡支持3个存档槽位
- 存档保存在
saves/ 目录下
- 自动保存功能(每30秒)
- 存档记录:Power、HP、等级、Boss击败状态等
- 出现条件:关卡2
- 攻击方式:直线法球 (
ghost_orb.png),法球遇障爆炸,朝向玩家并有攻击动画
- Boss 胜利:Power 达标后击败 Ghost
- 出现条件:关卡3
- 机制:Boss 本体无敌,按顺序生成 3 块石碑 (
turtle_rock.png),石碑到时重新定位
- 击败方式:击碎全部石碑后方可击败 Turtle
- 每个关卡随机生成1-2个障碍物,生成间距极大避免重叠
- 使用对应关卡的贴图:
obstacle_war.png、obstacle_magic.png、obstacle_gold.png
- 玩家和敌人都无法穿透
- 生成时不会与其他物体重叠
- 可吞噬敌人:贴图添加浅绿色滤镜 (RGBA: 100,255,100,60)
- 危险敌人:贴图添加浅红色滤镜 (RGBA: 255,100,100,60)
- Ghost 和 Turtle 不显示滤镜(有特殊机制)
FishGame/
├── CMakeLists.txt # 构建配置
├── Config.h # 游戏配置参数
├── main.cpp # 程序入口
├── GameWidget.h/cpp # 主游戏逻辑
├── GameObject.h/cpp # 游戏对象基类
├── Player.h/cpp # 玩家类
├── Enemy.h/cpp # 敌人类(含Ghost、Turtle)
├── Item.h/cpp # 道具类
├── Obstacle.h/cpp # 障碍物类
├── Projectile.h/cpp # 投射物类(法球、石碑)
└── SaveData.h # 存档系统
choose_stage.png - 关卡选择界面(单张三等分)
stage_bg_war.png - 关卡1背景
stage_bg_magic.png - 关卡2背景
stage_bg_gold.png - 关卡3背景
ghost_orb.png - Ghost法球
ghost_orb_blow.png - 法球爆炸
turtle_rock.png - Turtle石碑
turtle_rock_blow.png - 石碑破碎
obstacle_war.png - 关卡1障碍物
obstacle_magic.png - 关卡2障碍物
obstacle_gold.png - 关卡3障碍物
ghost/swim (1).png ~ swim (39).png - Ghost游动动画
ghost/bite (1).png ~ ... - Ghost攻击动画
turtle/swim (1).png ~ swim (25).png - Turtle游动动画
turtle/bite (1).png ~ ... - Turtle攻击动画
click.mp3 - 关卡选择音效
rock_blow.mp3 - 石碑/法球爆炸音效
#define STAGE_1_WIN_POWER 300
#define STAGE_2_WIN_POWER 350
#define STAGE_3_WIN_POWER 350
#define TURTLE_ROCK_COUNT 3 // 石碑数量(顺序生成)
#define TURTLE_ROCK_TIMEOUT 9000 // 石碑存在时间(毫秒)
#define TURTLE_ROCK_BLINK_START 6000 // 开始闪烁时间
#define TURTLE_ROCK_RESPAWN_MS 1500 // 下一块石碑生成延迟
#define GHOST_ORB_SPEED 6.0 // 法球速度
#define GHOST_ORB_DAMAGE 15 // 法球伤害
#define GHOST_SHOOT_INTERVAL 180 // 发射间隔(帧)
#define FILTER_EATABLE_R/G/B/A 100,255,100,60 // 可吞噬(绿色)
#define FILTER_DANGER_R/G/B/A 255,100,100,60 // 危险(红色)
#define ITEM_SPAWN_INTERVAL 200 // 生成间隔(帧)
#define ITEM_MAX_COUNT 10 // 场景最大道具数
- 确保已安装 Qt6(包含 Core、Gui、Widgets、Multimedia 模块)
- 在项目目录下运行:
mkdir build && cd build
cmake ..
cmake --build .
- 编译完成后,
assets 文件夹会自动复制到可执行文件目录