Skip to content

GongZhihui/PlaneWar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PlaneWar

一个关于qt飞机大战游戏,根据【b站 斧头帮-帮主】【C++之Qt版本飞机大战】视频而写。

一些说明

  • 该代码是根据视频中老师的讲解和代码一行一行敲出来的;
  • 我几乎没有写注释,学习需要配合老师的视频来;
  • 配置文件中有几个时间我微调了下;

开发环境说明

  • 我用的win10 + vs2019,vs2017也可以;
  • vs2019开发qt需要安装msvc版的qtqt vs tool插件
  • 如果环境配置好了,编译错误,多半是window sdk不匹配,重新选择下平台工具集就好了

其他

  • 我已经生成好了plane.rcc文件【在项目的根目录下】,仅仅需要把它放到执行文件目录下即可,该项目需要把放到执行文件同级目录下的res目录里,需要新建个res目录。
  • 关于中文乱码,可用c++11字符串字面量u8"xxx"解决;
  • 有些地方的代码跟老师的代码不一样,我重构了下代码,比如:
    • 需要显示的都提供void draw(QPainter&)接口
    void MainScene::paintEvent(QPaintEvent* ev)
    {
        QPainter painter(this);
    
        map_.draw(painter);
        heroPlane_.draw(painter);
        enemy_.draw(painter);
        bombEffect_.draw(painter);
    }
    • 将敌军飞机和爆炸分别再次封装
    class Enemy 
    {
    public:
        using EnemyPlaneType = std::array<EnemyPlane, ENEMY_PLANE_NUM>;
    
        Enemy();
        void draw(QPainter& painter);
    
        void enemyToScene();
        void updatePosition();
        EnemyPlaneType& enemyPlanes();
    
    private:
        EnemyPlaneType enemyPlanes_;
        int recorder_{ 0 };
    };
    
    class BombEffect 
    {
    public:
        BombEffect() = default;
    
        void show(int x, int y);
        void update();
        void draw(QPainter& painter);
    
    private:
        std::array<Bomb, BOMB_MAX> bombs_;
    };

若有意见或建议可以联系我,qq: 1097441231,一起学习交流(* ̄︶ ̄)。

About

一个qt飞机大战游戏,from 【b站 斧头帮-帮主】 https://www.bilibili.com/video/BV1MJ411E7dP?p=1

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages