这是一个使用Qt6框架开发的2D纵版射击游戏(STG),支持两名玩家在同一台计算机上进行实时游戏。游戏采用C++17标准开发,利用Qt的2D图形绘制系统实现流畅的空战体验。
- 双人合作模式:两名玩家同屏操作各自的战斗机
- 实时射击:连续射击系统,可发射子弹攻击敌机
- 炸弹系统:每位玩家拥有炸弹道具,造成范围伤害
- 敌机系统:包含普通敌机和精英敌机两种类型
- 道具掉落:精英敌机被击败后掉落生命值恢复或炸弹道具
- 移动限制:玩家只能在屏幕下半部分移动
- 敌机AI:敌机从上方生成,具有摇摆移动轨迹并会发射子弹
- 碰撞检测:完整的碰撞检测系统
- 生命值系统:玩家和敌机都具有生命值
- 游戏菜单:包含开始游戏和退出游戏选项
- WASD:移动战斗机
- J:射击
- K:使用炸弹
- 方向键:移动战斗机
- 0:射击
- 1:使用炸弹
- ESC:返回主菜单
- Linux操作系统
- Qt6开发环境
- CMake 3.16或更高版本
- C++17兼容的编译器
# 进入项目目录
cd /home/alanrosston/Coding/CProject/QtFiles/Project
# 运行构建和启动脚本
./build_and_run.sh# 进入项目目录
cd /home/alanrosston/Coding/CProject/QtFiles/Project
# 创建构建目录
mkdir build && cd build
# 配置项目
cmake ..
# 编译项目
make
# 运行游戏
./AirplaneWar如果你在VS Code中打开项目,可以:
- 按
Ctrl+Shift+P打开命令面板 - 输入 "Tasks: Run Task"
- 选择 "Build and Run AirplaneWar"
Project/
├── main.cpp # 程序入口
├── CMakeLists.txt # CMake构建配置
├── build_and_run.sh # 构建和运行脚本
├── README.md # 项目说明文档
├── include/ # 头文件目录
│ ├── core/ # 核心系统头文件
│ │ ├── game.h # 主游戏类
│ │ ├── gameobject.h # 基础游戏对象类
│ │ └── gamestate.h # 游戏状态枚举
│ └── entities/ # 游戏实体头文件
│ ├── player.h # 玩家类
│ ├── bullet.h # 子弹类
│ ├── enemy.h # 敌机类
│ └── item.h # 道具类
├── src/ # 源文件目录
│ ├── core/ # 核心系统实现
│ │ ├── game.cpp # 主游戏类实现
│ │ └── gameobject.cpp # 基础游戏对象实现
│ └── entities/ # 游戏实体实现
│ ├── player.cpp # 玩家类实现
│ ├── bullet.cpp # 子弹类实现
│ ├── enemy.cpp # 敌机类实现
│ └── item.cpp # 道具类实现
└── build/ # 构建输出目录
└── AirplaneWar # 可执行文件
- GameObject: 所有游戏实体的基类,提供位置、大小、速度、生命值等基本属性
- GameState: 游戏状态枚举(菜单、游戏中、游戏结束)
- Game: 主游戏控制器,负责游戏循环、渲染、事件处理
- Player: 玩家飞机类,继承自GameObject
- Bullet: 子弹类,包含伤害属性
- Enemy: 敌机类,支持普通和精英两种类型
- Item: 道具类,支持生命恢复和炸弹两种类型
- 继承: 所有游戏实体都继承自GameObject基类
- 组合: Game类包含各种游戏实体的集合
- 智能指针: 使用std::unique_ptr管理内存
- 模块化: 不同功能分离到不同文件夹
- Qt6 Widgets:用户界面和窗口管理
- QPainter:2D图形绘制
- QTimer:游戏循环和动画
- STL容器:游戏对象管理
- 智能指针:内存管理
- 游戏状态管理:菜单、游戏进行、游戏结束
- 对象导向设计:玩家、敌机、子弹、道具等游戏对象
- 碰撞检测算法:矩形碰撞检测
- 渲染循环:60FPS游戏循环
- 显示游戏标题
- 提供开始游戏和退出游戏按钮
- 星空背景动画
- 上半部分:敌机活动区域
- 下半部分:玩家活动区域(红色虚线分隔)
- 实时显示玩家生命值和炸弹数量
- 动态星空背景滚动效果
如果你想进一步扩展游戏,可以考虑:
- 音效系统:添加射击、爆炸、背景音乐等音效
- 粒子效果:爆炸特效、推进器尾焰等
- 更多敌机类型:BOSS敌机、特殊攻击模式
- 武器升级:多种子弹类型、威力提升
- 关卡系统:多个难度递增的关卡
- 分数系统:击败敌机获得分数、排行榜
- 联网对战:多人在线模式
-
CMake找不到Qt6
# 安装Qt6开发包 sudo apt install qt6-base-dev qt6-tools-dev -
编译错误
- 确保使用C++17标准
- 检查Qt6是否正确安装
- 确认CMake版本 >= 3.16
-
运行时图形问题
- 确保系统支持OpenGL
- 检查显卡驱动是否正确安装
如果遇到问题,请检查:
- CMake配置输出
- 编译器错误信息
- Qt6安装状态
本项目仅用于学习和演示目的。使用了Qt6框架,请确保遵守相关开源许可证。
享受游戏,祝你玩得开心! 🚀