编程语言
首页 > 编程语言> > C++弹幕游戏自制分享

C++弹幕游戏自制分享

作者:互联网

一个弹幕射击游戏,有两种模式,第一种模式是类似飞机大战,第二种模式是boss挑战,boss的弹幕后续可以追加多种类型,用的是easyx图形库

#include<iostream>
#include<conio.h>
#include"easyx.h"
#include<time.h>
#include<fstream>
#include<string>
#include<stdlib.h>
#include<windows.h>
#include<Mmsystem.h>
#pragma comment(lib,"winmm.lib")
using namespace std;

enum first {
    WIDTH = 1300,
    HEIGHT = 800,
    bulletnum = 2000,
    BIG,
    SMALL,
    BOSS,
    yixingtai,
    erxingtai,
    sanxingtai,
    sixingtai,
    wuxingtai,
    liuxingtai,
    qixingtai,
    baxingtai,
    jiuxingtai,
    shixingtai
};
int enemynum;

struct Gamer//玩家
{
    int attack;


    double x;
    double y;


    bool live;//是否存活
    
    int hp;    
    int type;
    int height;
    int width;

    bool flag;

    
}player,bull[bulletnum], bull2[bulletnum], bull3[bulletnum],enemy[201],boss;

struct openwin{
    int sco;
    int chose;
    bool ret;
    int exen;
    int spd;
}control;

ifstream  ifs;
ofstream ofs;

IMAGE bk;
IMAGE img_role[2];
IMAGE img_bull[6];
IMAGE img_enemy[3][2];
IMAGE img_boss[2];


TCHAR s[1024];


void loadImg()//加载图片
{
    loadimage(&bk, "./zhandoujiemian.png");
    loadimage(&img_role[0], "./player1.png");
    loadimage(&img_role[1], "./player2.png");

    //加载子弹
    loadimage(&img_bull[0], "./bullet1.png");
    loadimage(&img_bull[1], "./bullet2.png");
    loadimage(&img_bull[2], "./bullet3.png");
    loadimage(&img_bull[3], "./bullet4.png");
    loadimage(&img_bull[4], "./bullet5.png");
    loadimage(&img_bull[5], "./bullet6.png");


    loadimage(&img_enemy[0][0], "./enemy1.png");
    loadimage(&img_enemy[0][1], "./enemy2.png");
    loadimage(&img_enemy[1][0], "./enemy3.png");
    loadimage(&img_enemy[1][1], "./enemy4.png");
    loadimage(&img_enemy[2][0], "./enemy5.png");
    loadimage(&img_enemy[2][1], "./enemy6.png");
    

    loadimage(&img_boss[0], "./player1.png");
    loadimage(&img_boss[1], "./bullet2.png");

}

bool Timer(int ms, int id) {//计时器
    static DWORD t[20];
    if (clock() - t[id] > ms) {
        t[id] = clock();
        return true;
    }
    return false;
}

//------------------------------------------------------------------------------------------------------------------------------------------------
class initanddraw {
public:
    void enemyHp(int i) {
        int randow1 = rand() % 10;
        if (control.chose == 2) {

            if (randow1 >= 0 && randow1 <= 2) {

                enemy[i].type = BIG;
                enemy[i].hp = 3;
                enemy[i].width = 80;//碰撞体积-------------------
                enemy[i].height = 80;
            }//da
            else if (randow1 >= 3 && randow1 <= 9) {
                enemy[i].type = SMALL;
                enemy[i].hp = 1;
                enemy[i].width = 80;//碰撞体积-------------------
                enemy[i].height = 80;
            }
        }

        if (control.chose == 3) {
            enemy[i].type = BOSS;
            enemy[i].hp = 100;
            enemy[i].width = 80;//碰撞体积-------------------
            enemy[i].height = 80;
        }
    }


    void gameinit() {
        loadImg();

        player.live = true;

        player.hp = 3;

        player.x = WIDTH / 4;
        player.y = HEIGHT / 3;

        player.width = 80;
        player.height = 80;

        for (int i = 0; i < bulletnum; i++) {
            bull[i].x = 0;
            bull[i].y = 0;
            bull[i].live = false;
        }

        for (int j = 0; j < bulletnum; j++) {
            bull2[j].x = 0;
            bull2[j].y = 0;
            bull2[j].live = false;
        }

        for (int k = 0; k < bulletnum; k++) {
            bull3[k].x = 0;
            bull3[k].y = 0;
            
            bull3[k].live = false;
        }

        for (int i = 0; i < enemynum; i++) {
            enemy[i].live = false;
            enemyHp(i);
        }

        enemy[0].live = true;
        enemy[0].x = 1350;
        enemy[0].y = 200;

    }
    void xuetiaoboss() {
        if (enemy[0].type == BOSS) {
            setfillcolor(RED);
            solidrectangle(300, 30, 300+enemy[0].hp*7, 40);
        }
    }
    void xuetiaoplayer() {
            setfillcolor(BLUE);
            solidrectangle(100, 30, 100 + player.hp* 33, 40);
    }

    void gamedraw()//绘制
    {
        loadImg();
        putimage(0, 0, &bk);
        putimage(player.x, player.y, &img_role[1], NOTSRCERASE);//掩码图
        putimage(player.x, player.y, &img_role[0], SRCINVERT);//源码图
        putimage(player.x, player.y, &img_role[1], NOTSRCERASE);//掩码图
        putimage(player.x, player.y, &img_role[0], SRCINVERT);//源码图
        xuetiaoplayer();

        for (int i = 0; i < bulletnum; i++) {
            if (bull[i].live)
            {
                putimage(bull[i].x, bull[i].y, &img_bull[1], NOTSRCERASE);//掩码图
                putimage(bull[i].x, bull[i].y, &img_bull[0], SRCINVERT);//源码图
                putimage(bull[i].x, bull[i].y, &img_bull[1], NOTSRCERASE);//掩码图
                putimage(bull[i].x, bull[i].y, &img_bull[0], SRCINVERT);//源码图
            }
        }

        for (int j = 0; j < bulletnum; j++) {
            if (bull2[j].live)
            {
                putimage(bull2[j].x, bull2[j].y, &img_bull[3], NOTSRCERASE);//掩码图
                putimage(bull2[j].x, bull2[j].y, &img_bull[2], SRCINVERT);//源码图
                putimage(bull2[j].x, bull2[j].y, &img_bull[3], NOTSRCERASE);//掩码图
                putimage(bull2[j].x, bull2[j].y, &img_bull[2], SRCINVERT);//源码图
            }
        }

        for (int i = 0; i < bulletnum; i++) {
            if (bull3[i].live)
            {
                putimage(bull3[i].x, bull3[i].y, &img_bull[5], NOTSRCERASE);//掩码图
                putimage(bull3[i].x, bull3[i].y, &img_bull[4], SRCINVERT);//源码图
                putimage(bull3[i].x, bull3[i].y, &img_bull[5], NOTSRCERASE);//掩码图
                putimage(bull3[i].x, bull3[i].y, &img_bull[4], SRCINVERT);//源码图

            }
        }

        for (int i = 0; i < enemynum; i++) {
            if (enemy[i].live) {
                if (enemy[i].type == BIG) {
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[1][1], NOTSRCERASE);
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[1][0], SRCINVERT);
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[1][1], NOTSRCERASE);
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[1][0], SRCINVERT);
                }
                else if(enemy[i].type==SMALL){
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[0][1], NOTSRCERASE);
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[0][0], SRCINVERT);
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[0][1], NOTSRCERASE);
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[0][0], SRCINVERT);
                }
                else if (enemy[i].type == BOSS) {
                    xuetiaoboss();
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[2][1], NOTSRCERASE);
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[2][0], SRCINVERT);
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[2][1], NOTSRCERASE);
                    putimage(enemy[i].x, enemy[i].y, &img_enemy[2][0], SRCINVERT);
                }
            }
        }
    }

}iad;
//------------------------------------------------------------------------------------------------------------------------------------------------
class zidanlei {
public:

    void createbullet() {
        for (int i = 0; i < bulletnum; i++) {
            if (!bull[i].live) {
                bull[i].x = player.x + 60;
                bull[i].y = player.y + 50;
                bull[i].live = true;
                break;
            }
        }
    }

    void createbullet2() {
        for (int j = 0; j < control.exen; j++) {
            for (int i = 0; i < bulletnum; i++) {
                if (!bull2[i].live) {

                    bull2[i].x = enemy[j].x+30;
                    bull2[i].y = enemy[j].y +50;
                    bull2[i].live = true;

                    break;
                }
            }
        }
    }

    void createbullet3() {
        
            if (boss.type == yixingtai || boss.type == erxingtai || boss.type == sanxingtai || boss.type == sixingtai || boss.type == liuxingtai) {
                if (Timer(350, 4)) {
                    for (int i = 0; i < bulletnum; i++) {
                        if (!bull3[i].live)
                        {
                            bull3[i].x = enemy[0].x + 40;
                            bull3[i].y = enemy[0].y + 40;
                            bull3[i].live = true;
                            break;
                        }
                    }
                }
            }

            if (boss.type == wuxingtai) {

                if (Timer(50, 10)) {
                    for (int i = 0; i < 15; i++) {
                        if (!bull3[i].live)
                        {

                            bull3[i].x = enemy[0].x + 40;
                            bull3[i].y = enemy[0].y + 40;


                            bull3[i].live = true;
                            break;
                        }
                    }
                }
            }

            if (boss.type == qixingtai) {
                if (Timer(100, 11)) {
                    for (int i = 0; i < 24; i++) {
                        if (!bull3[i].live)
                        {

                            bull3[i].x = enemy[0].x + 40;
                            bull3[i].y = enemy[0].y + 40;


                            bull3[i].live = true;
                            break;
                        }
                    }
                }
            }
            if (boss.type == baxingtai) {
                if (Timer(100, 12)) {
                    for (int i = 0; i < 60; i++) {
                        if (!bull3[i].live)
                        {
                            if (i <= 20) {
                                bull3[i].x = enemy[0].x + 40;
                                bull3[i].y = enemy[0].y + 40;
                            }
                            if (i <= 40&&i> 20) {
                                bull3[i].x = enemy[0].x+40;
                                bull3[i].y = enemy[0].y + 80;
                            }
                            if (i <= 60 && i > 40) {
                                bull3[i].x = enemy[0].x + 40;
                                bull3[i].y = enemy[0].y;
                            }


                            bull3[i].live = true;
                            break;
                        }
                    }
                }
            }
        
    }


    void bulletmove() {
        for (int i = 0; i < bulletnum; i++) {
            if (bull[i].live) {
                bull[i].x += 6;//子弹速度
                if (bull[i].x > 1400)
                {
                    bull[i].live = false;
                }
            }
        }
    }

    void bulletmove2() {
        for (int i = 0; i < bulletnum; i++) {
            if (bull2[i].live) {
                bull2[i].x -= 6;//子弹速度
                if (bull2[i].x < -400)
                {
                    bull2[i].live = false;
                }
            }
        }
    }

    void bulletmove3() {
        
        int zhuanhuan = 0;
        if(Timer(8000, 7)) {
            zhuanhuan = rand() % 8+1;
        }
        if (zhuanhuan == 1) {
            boss.type = yixingtai;
        }
        if (zhuanhuan == 2) {
            boss.type = erxingtai;
        }
        if (zhuanhuan == 3) {
            boss.type = sanxingtai;
        }
        if (zhuanhuan == 4) {
            boss.type = sixingtai;
        }
        if (zhuanhuan == 5) {
            boss.type = wuxingtai;
        }
        if (zhuanhuan == 6) {
            boss.type = liuxingtai;
        }
        if (zhuanhuan == 7) {
            boss.type = qixingtai;
        }
        if (zhuanhuan == 8) {
            boss.type = baxingtai;
        }
        if (zhuanhuan == 9) {
            boss.type = jiuxingtai;
        }


        if (boss.type == yixingtai) {
            for (int i = 0; i < bulletnum; i++) {
                if (bull3[i].live) {
                    bull3[i].x -= 6;//子弹速度
                    if (bull3[i].x < -100 || bull3[i].y < -100 || bull3[i].y > 900 || bull3[i].x> 1400)
                    {
                        bull3[i].live = false;
                    }
                }
            }
        }
        else if (boss.type == erxingtai) {
            for (int i = 0; i < bulletnum; i++) {
                if (bull3[i].live) {

                    bull3[i].x -= 6;
                    bull3[i].y -= 3;
                    //子弹速度
                    if (bull3[i].x < -100 || bull3[i].y < -100 || bull3[i].y > 900 || bull3[i].x> 1400)
                    {
                        bull3[i].live = false;
                    }
                }
            }
        }
        else if (boss.type == sanxingtai) {
            for (int i = 0; i < bulletnum; i++) {
                if (bull3[i].live) {

                    bull3[i].x -= 6;
                    bull3[i].y += 3;
                    //子弹速度
                    if (bull3[i].x < -100 || bull3[i].y < -100 || bull3[i].y > 900 || bull3[i].x> 1400)
                    {
                        bull3[i].live = false;
                    }
                }
            }
        }
        else if (boss.type == sixingtai) {
            for (int i = 0; i < 3; i++) {
                if (bull3[i].live) {
                    bull3[i].x -= 15;
                    //子弹速度
                    if (bull3[i].x < -100 || bull3[i].y < -100 || bull3[i].y > 900 || bull3[i].x> 1400)
                    {
                        bull3[i].live = false;
                    }
                }
            }
        }
        else if (boss.type == wuxingtai) {
            for (int i = 0; i < 15; i++) {
                if (bull3[i].live) {
                    if (i>= 0&&i<5) {
                        bull3[i].x -= 6;
                    }
                    if (i >= 5 && i < 10) {
                        bull3[i].y -= 3;
                        bull3[i].x -= 5;
                    }
                    if (i >= 10 && i < 15) {
                        bull3[i].y += 3;
                        bull3[i].x -= 5;
                    }

                    if (bull3[i].x < -100 || bull3[i].y < -100 || bull3[i].y > 900 || bull3[i].x> 1400)
                    {
                        bull3[i].live = false;
                    }
                }
            }
        }
        else if (boss.type == liuxingtai) {
            for (int i = 0; i < 10; i++) {
                if (bull3[i].live) {
                    if (i < 5) {
                        bull3[i].x += 4;
                    }
                    if (i >= 5) {
                        bull3[i].x -= 6;
                    }
                
                    if (bull3[i].x < -100 || bull3[i].y < -100 || bull3[i].y > 900 || bull3[i].x> 1400)
                    {
                        bull3[i].live = false;
                    }
                }
            }
        }
        else if (boss.type == qixingtai) {
            for (int i = 0; i < 24; i++) {
                if (bull3[i].live) {


                    if (i >= 0 && i < 5) {
                        bull3[i].x -= 5;
                    }
                    if (i >= 5 && i < 10) {
                        bull3[i].y -= 3;
                        bull3[i].x -= 5;
                    }
                    if (i >= 10 && i < 15) {
                        bull3[i].y += 3;
                        bull3[i].x -= 5;
                    }if (i >= 15 && i <16) {

                        bull3[i].x += 5;
                    }
                    if (i >= 16 && i < 20) {
                        bull3[i].y -= 3;
                        bull3[i].x += 5;
                    }
                    if (i >= 20 && i < 24) {
                        bull3[i].y += 3;
                        bull3[i].x += 5;
                    }


                    if (bull3[i].x < -100 || bull3[i].y < -100 || bull3[i].y > 900 || bull3[i].x> 1400)
                    {
                        bull3[i].live = false;
                    }
                }
            }
        }

        else if (boss.type == baxingtai) {
            for (int i = 0; i < 60; i++) {
                if (bull3[i].live) {
                    if (i >= 0 && i < 20) {
                        bull3[i].x -= 6;
                    }
                    if (i >= 20 && i < 40) {
                        bull3[i].y -= 1;
                        bull3[i].x -= 6;
                    }
                    if (i >= 40 && i < 60) {
                        bull3[i].y += 1;
                        bull3[i].x -= 6;
                    }


                    if (bull3[i].x < -100 || bull3[i].y < -100 || bull3[i].y > 900 || bull3[i].x> 1400)
                    {
                        bull3[i].live = false;
                    }
                }
            }
        }
        
        

    }

}zidan;
//------------------------------------------------------------------------------------------------------------------------------------------------
void PlayerMove(int speed) {//操控
    if (player.live == true) {
        if (GetAsyncKeyState(VK_UP)) {
            if (player.y > 0) {
                player.y -= speed;
            }
        }
        if (GetAsyncKeyState(VK_DOWN)) {
            if (player.y < 700) {
                player.y += speed;
            }
        }
        if (GetAsyncKeyState(VK_LEFT)) {
            if (player.x > 0) {
                player.x -= speed;
            }
        }
        if (GetAsyncKeyState(VK_RIGHT)) {
            if (player.x < 1220) {
                player.x += speed;
            }
        }

        if (GetAsyncKeyState(VK_SPACE) && Timer(300, 1))
        {
            zidan.createbullet();
        };
    }
    if(player.live==false) {
        control.ret = false;
    }
}

//------------------------------------------------------------------------------------------------------------------------------------------------
class enemyfuct:public initanddraw, public zidanlei{
public:


void createenemy() {
    for (int i = 0; i < enemynum; i++) {
        if (!enemy[i].live && enemy[i].type!=BOSS) {
            enemy[i].live = true;
            enemy[i].x = 1350/*rand()%1450+1350*/;
            enemy[i].y = rand() % (HEIGHT - 100);
            enemyHp(i);
            break;
        }

        else if (!enemy[i].live && enemy[i].type == BOSS) {
            
            enemy[i].live = true;
            enemy[i].x = 1350/*rand()%1450+1350*/;
            enemy[i].y = rand() % (HEIGHT - 50);
            enemyHp(i);
            break;
        }

    }
}

void enemymove(int speed)
{
    for (int i = 0; i < enemynum; i++)
    {

        if (enemy[i].live && enemy[i].type != BOSS) {
            enemy[i].x -= speed;
            if (Timer(1000, 3)) {
                createbullet2();
            }
            if (enemy[i].x < -200)
            {
                player.hp -= 1;
                enemy[i].live = false;
            }
        }

/// <summary>
/// ///
///            boss  skill                                                                          //
///              boss  skill                                                                        ///
///            boss  skill                                                                           
///          boss  skill                                                                             ///
///
/// </summary>
/// <param name="speed"></param>

        if (enemy[i].live && enemy[i].type == BOSS) {
                    
                    createbullet3();
                    
            if (enemy[i].x > 1100) {
                enemy[i].x -= speed;
            }
            if (enemy[i].live && enemy[i].type == BOSS && enemy[i].x <= 1100 && enemy[i].y >= 600) {
                boss.flag = true;
            }
            if (enemy[i].live && enemy[i].type == BOSS && enemy[i].x <= 1100 && enemy[i].y <= 100) {
                boss.flag = false;
            }

            if (boss.flag == false) {
                enemy[i].y += 2;
            }
            else {
                enemy[i].y -= 2;
            }
        }


    }
}

}enemyfun;
//------------------------------------------------------------------------------------------------------------------------------------------------
class diedpanding {
public:

    int upsorce(openwin* p) {
        p->sco += 1;
        return p->sco;
    }

    int upsorce2(openwin* p) {
        p->sco += 100;
        return p->sco;
    }


    void diedenemy() {
        for (int i = 0; i < enemynum; i++)
        {
            if (!enemy[i].live)
                continue;
            for (int k = 0; k < bulletnum; k++)
            {
                if (!bull[k].live)
                    continue;
                if (bull[k].x > enemy[i].x && bull[k].x<enemy[i].x + enemy[i].width
                    && bull[k].y>enemy[i].y && bull[k].y < enemy[i].y + enemy[i].height)
                {
                    bull[k].live = false;                    
                    enemy[i].hp--;//掉血                
                }
            }
            if (enemy[i].hp <= 0)
            {
                control.exen -= 1;//存在的敌机数
                enemy[i].live = false;
                if (enemy[i].type == BOSS) {
                    upsorce2(&control);

                    settextcolor(YELLOW);
                    settextstyle(100, 0, "楷体");
                    setbkmode(TRANSPARENT);
                    outtextxy(300, 250, "游戏胜利");
                    _stprintf(s, _T("得分: %d"), control.sco);
                    outtextxy(300, 350, s);


                    control.ret = false;
                }
                if (enemy[i].type == SMALL) {
                    upsorce(&control);

                }
                if (enemy[i].type == BIG) {
                    upsorce(&control);
                    upsorce(&control);
                    upsorce(&control);
                }
            }
        }
    }

    void diedgamer() {

        for (int k = 0; k < bulletnum; k++)
        {
            if (enemy[0].type != BOSS) {
                if (!bull2[k].live) {
                    continue;
                }
                if (bull2[k].x > player.x && bull2[k].x<player.x + player.width
                    && bull2[k].y>player.y && bull2[k].y < player.y + player.height)
                {
                    bull2[k].live = false;
                    player.hp--;//掉血
                }
            }

            if (enemy[0].type == BOSS) {
                if (!bull3[k].live) {
                    continue;
                }
                if (bull3[k].x > player.x && bull3[k].x<player.x + player.width
                    && bull3[k].y>player.y && bull3[k].y < player.y + player.height)
                {
                    bull3[k].live = false;
                    player.hp--;//掉血
                }
            }


            if (player.hp <= 0)
            {
                
                settextcolor(RED);
                settextstyle(100, 0, "楷体");
                setbkmode(TRANSPARENT);
                outtextxy(300, 250, "游戏结束");
                _stprintf(s, _T("得分: %d"), control.sco);
                outtextxy(300, 350, s);

                Sleep(100);
                player.live = false;
                
            }
        }

    }
}died;
//------------------------------------------------------------------------------------------------------------------------------------------------

void dufenbiao() {
    
    
    ifs.open("score.txt", ios::in);


    char fen[1024];
    while (ifs.getline(fen, sizeof(fen)))
    {
    
        settextcolor(YELLOW);
        settextstyle(50, 0, "楷体");
        setbkmode(TRANSPARENT);
        outtextxy(0, 0, "分数表已打印在控制台");

        cout << fen << endl;
    }

    Sleep(300);

    ifs.close();
}

class shop {
public:
    virtual void shopping()=0;    
};

void shopping() {
    settextcolor(YELLOW);
    settextstyle(50, 0, "楷体");
    setbkmode(TRANSPARENT);
    outtextxy(0, 0, "还没开业");
    Sleep(300);
}


int Openwindows() {
    IMAGE bk2;
    PlaySound("bgm1.wav", NULL, SND_FILENAME | SND_ASYNC |SND_LOOP);
    loadimage(&bk2, "./Fengmian.png");
    control.chose = 0;
    control.sco = 0;
    
    while (1) {
        putimage(0, 0, &bk2);
        char input;
        if (kbhit())      
        {
            input = getch();
            if ((input == 'q')|| (input == 'Q')) {
                enemynum = 200;
                control.chose = 2;
                PlaySound("bgm2.wav", NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
                break;
            }
            if ((input == 'w') || (input == 'W')) {
                enemynum = 1;
                control.chose = 3;
                
                PlaySound("bgm3.wav", NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
                break;
            }
            if ((input == 'e') || (input == 'E')) {
                dufenbiao();
            }
            if ((input == 'r') || (input == 'R')) {
                shopping();
            }
            if ((input == 't') || (input == 'T'))
            {
                exit(10);
                break;
            }
        }
    }

}


int Fenshubiao(openwin *p) {
    ofs.open("score.txt", ios::out|ios::app );
    ofs <<"得分 " << control.sco <<endl;
    ofs.close();
    return p->sco;
}


//------------------------------------------------------------------------------------------------------------------------------------------------
int main()
{
    initgraph(WIDTH, HEIGHT, EW_SHOWCONSOLE);
    boss.flag = false;
    srand((unsigned)time(NULL));
    

loop:while (1) {
    control.ret = true;
    
    Openwindows();

    control.exen = 0;
    control.spd = 1;

    iad.gameinit();
    BeginBatchDraw();
    while (1) {
        iad.gamedraw();

        FlushBatchDraw();

        PlayerMove(4);
        zidan.bulletmove();

        if (Timer(1800, 0))
        {
            enemyfun.createenemy();
            control.exen += 1;//存在的敌机
        }
        if (Timer(20000, 5) && control.spd < 6) {
            control.spd += 1;
        }
            enemyfun.enemymove(control.spd);

            zidan.bulletmove2();
            zidan.bulletmove3(); 
            
            died.diedenemy();
            died.diedgamer();
        
        if (control.ret == false) {
            break;
        }
    }
    EndBatchDraw();
    Sleep(1000);
    cleardevice();
    Fenshubiao(&control);
    goto loop;
}
    
    return 0;
}

标签:enemy,img,int,自制,C++,bull3,live,bull,弹幕
来源: https://blog.csdn.net/weixin_44329559/article/details/122795668