手把手用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做飞机大战的主要逻辑都说清楚了

相关文章
|
6天前
|
算法 C++ 容器
C++标准库(速查)总结
C++标准库(速查)总结
33 6
|
19天前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
77 10
|
6天前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
36 5
|
6天前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
21 1
|
28天前
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
32 6
|
28天前
|
安全 C++
超级好用的C++实用库之环形内存池
超级好用的C++实用库之环形内存池
39 5
|
28天前
|
缓存 网络协议 Linux
超级好用的C++实用库之套接字
超级好用的C++实用库之套接字
26 1
|
28天前
|
存储 算法 安全
超级好用的C++实用库之sha256算法
超级好用的C++实用库之sha256算法
51 1
|
28天前
|
存储 算法 安全
超级好用的C++实用库之国密sm4算法
超级好用的C++实用库之国密sm4算法
39 0
|
28天前
|
网络协议 Linux C++
超级好用的C++实用库之网络
超级好用的C++实用库之网络
33 0