手把手用c++的easyx库,带你做出飞机大战

简介: 手把手用c++的easyx库,带你做出飞机大战

首先easyx是一个用来写小游戏的插件库,官网在这,可以自行下载:传送门

EasyX Graphics Library 是针对 Visual C++ 的免费绘图库,支持 VC6.0 ~ VC2019,简单易用,学习成本极低,应用领域广泛。目前已有许多大学将 EasyX 应用在教学当中。

在这里插入图片描述

在这里插入图片描述
官方也有给出学习的方法,自己可以进入官方去看看。

老规矩,先上效果图

在这里插入图片描述

这个打飞机小游戏素材都很一般,直接网上抠图下来的。但我们应该学习一下怎么入门这一款经典小游戏。游戏逻辑才是最重要,也是最值得学习的东西。

在这里插入图片描述

首先游戏对象就这几个东西

// 全局画板
IMAGE bk;
IMAGE BK;
IMAGE Plane;
IMAGE Diren;
IMAGE Zidan;

这个游戏用到游戏插件easyX,我们想载入这几个图片。

//预加载资源,需要加载了之后才能用
void loadRes()
{
    loadimage(&bk, _T("res\\bg.png"));

    loadimage(&BK, _T("res\\bg.png"));
    loadimage(&Plane, _T("res\\plane.png"));

    loadimage(&Diren, _T("res\\diren.png"));
    loadimage(&Zidan, _T("res\\zidan.png"));
}

子弹和敌人的结构体先设计好,其实就是用来控制他们的位置的。

struct ZIDAN
{
    int x;
    int y;
};

struct DIREN
{
    int x;
    int y;
};

子弹和敌人是否碰撞,这里需要写碰撞检测,其实就是几点两点之间的距离就可以,这是最经典的碰撞算法。

bool isPeng(int x2,int y2,int x1,int y1)
{
    int result=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
    if(result<2500)
    {
        return true;
    }
    return false;
}

子弹与敌人碰撞之后,敌人就毁灭。这里面只需要把敌人移出屏幕就可以,因为子弹和敌人都是可以重复利用的,所以最好做一个对象池,可以重复用上。

    //判断子弹和飞机是否相撞
        for(i=0;i<8;i++)
        {
            for(int j=0;j<5;j++)
            {
                if(isPeng(zidans[j].x,zidans[j].y,direns[i].x+25,direns[i].y+15))
                {
                    direns[i].y = -100;
                }
            }
        }

需要wsad进行控制摇杆,飞机飞行

        if (_kbhit()) 
        {
            char ch = _getch();
            if (ch == 'w') 
            {
                planeY-=5;
            }
            if(ch == 's')
            {
                planeY+=5;
            }
            if(ch == 'a')
            {
                planeX-=5;
            }
            if(ch == 'd')
            {
                planeX+=5;
            }
        }

上面的代码把easyx做飞机大战的主要逻辑都说清楚了

相关文章
|
11天前
|
缓存 算法 程序员
C++STL底层原理:探秘标准模板库的内部机制
🌟蒋星熠Jaxonic带你深入STL底层:从容器内存管理到红黑树、哈希表,剖析迭代器、算法与分配器核心机制,揭秘C++标准库的高效设计哲学与性能优化实践。
C++STL底层原理:探秘标准模板库的内部机制
|
24天前
|
并行计算 C++ Windows
|
12月前
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
277 6
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
244 10
|
9月前
|
JSON C++ 数据格式
C++20 高性能基础库--兰亭集库助力开发者构建高性能应用
这次分享的主题是《高性能基础库--兰亭集库助力开发者构建高性能应用》的实践经验。主要分为三个部分: 1. 业务背景 2. 雅兰亭库架构 3. 业务优化
224 9
|
9月前
|
XML 网络协议 API
超级好用的C++实用库之服务包装类
通过本文对Boost.Asio、gRPC和Poco三个超级好用的C++服务包装类库的详细介绍,开发者可以根据自己的需求选择合适的库来简化开发工作,提高代码的效率和可维护性。每个库都有其独特的优势和适用场景,合理使用这些库可以极大地提升C++开发的生产力。
198 11
|
12月前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
157 5
|
12月前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
189 1
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
151 6
|
缓存 网络协议 Linux
超级好用的C++实用库之套接字
超级好用的C++实用库之套接字
130 1