编程语言
首页 > 编程语言> > C++飞机大战新手练习

C++飞机大战新手练习

作者:互联网

#include
#include<graphics.h>
#define X 700
#define Y 650
#define ZX 5
#define ZY 30
#define FX 60
#define FY 60

#define ZHIDAN 30
#define DIREN 30

DWORD t1, t2, w1, w2;

bool GameOver = true;

struct image{
IMAGE data;
IMAGE user;
IMAGE zidan;
IMAGE master;
}image;

struct zuobiao {
float x;
float y;
int hp;
bool boolz;
}user,master[DIREN],zidan[ZHIDAN];

void 加载图片(){

//图片途径可以修改  这是安装的一个简易图形库方便小游戏
t1 = t2 = w1 = w2 = GetTickCount();
loadimage(&image.data,"C:\\Users\\yaogu\\Desktop\\Game\\heise.png", 700, 650);
loadimage(&image.user, "C:\\Users\\yaogu\\Desktop\\Game\\user.png", FX, FY);
loadimage(&image.zidan, "C:\\Users\\yaogu\\Desktop\\Game\\765.png", ZX, ZY);
loadimage(&image.master, "C:\\Users\\yaogu\\Desktop\\Game\\diren.png", 40, 40);

//玩家
user.x = (X/2)-(FX/2);
user.y = Y-FY;
user.boolz = true;

//子弹
for (int i = 0; i < ZHIDAN; i++) {
    
    zidan[i].boolz = false;
}

//敌人
for (int i = 0; i < DIREN; i++) {

    master[i].boolz = false;
}

}

void 刷新显示() {

putimage(0, 0, &image.data);//背景

if (user.boolz == true && GameOver==true) {
    
    user.hp = 5;
    putimage(user.x, user.y, &image.user, SRCINVERT); //自己战机 NOTSRCCOPY  NOTSRCERASE

}

for (int i = 0; i < ZHIDAN; i++) {      //遍历自己子弹
    
    if (zidan[i].boolz == true) {

        putimage(zidan[i].x, zidan[i].y,&image.zidan, SRCINVERT);
    }
}

for (int i = 0; i < DIREN; i++) { //遍历敌人

    if (master[i].boolz == true) {
    
        putimage(master[i].x, master[i].y, &image.master, SRCINVERT);
    }
}

}

void 创建子弹() {

for (int i = 0; i < ZHIDAN; i++) {

    if (zidan[i].boolz == false && GameOver == true) {

        zidan[i].boolz = true;

        zidan[i].x = user.x + (FX/2);

        zidan[i].y = user.y - ((FY / 2) - (ZY / 2));

        break;
    }
}

}

void 发射子弹(float send) {

for (int i = 0; i < ZHIDAN; i++) {

    if (zidan[i].boolz==true) {

        zidan[i].y -= send;

        if (zidan[i].y + ZY <= 0) {

            zidan[i].boolz = false;
        }
      
    }
}

}

void 创建敌人() {

for (int i = 0; i < DIREN; i++) {

    if(master[i].boolz == false) {
        
        master[i].boolz = true;

        master[i].x = rand() % X - 40;

        master[i].y = 0;
        
        break;
    }
}

}

void 敌人显示(float send){

for (int i = 0; i < DIREN; i++) {

    if (master[i].boolz == true) {
        
        master[i].y += send;

        if (master[i].x < 0 || master[i].x > X || master[i].y - 100 > Y) {

            master[i].boolz = false;
        }
    }
}

}

void 击杀判断() {

for (int i = 0; i < ZHIDAN; i++) {
    
    for (int j = 0; j < DIREN; j++) {
        
        if (((zidan[i].x > master[j].x) && (zidan[i].x < master[j].x + 40)) && (zidan[i].y - ZY <= master[j].y)) {
               
            master[j].boolz = false;
        }
    }
}

}

void 撞击判断(){

for (int i = 0; i < DIREN; i++) {

    if ((master[i].x > user.x && master[i].x < user.x + FX) && (master[i].y > user.y - (FY/2))) {
           
        user.boolz = false;

        GameOver = false;

    }
}

}

void 子弹死亡() {

for (int i = 0; i < DIREN; i++) {

    for (int j = 0; j < ZHIDAN; j++) {

        if (((zidan[j].x > master[i].x) && (zidan[j].x < master[i].x + 40)) && (zidan[j].y - ZY <= master[i].y)) {

            zidan[j].boolz = false;

        }
    }
}

}

//子弹 怪物 等都是在这里初始化
void GetKey(float Key){

if (GetAsyncKeyState(VK_UP)) {

    if (user.y > 0) {
        user.y -= Key;
    }
}
if (GetAsyncKeyState(VK_DOWN)) {

    if (user.y < Y-FY) {
        user.y += Key;
    }
}
if (GetAsyncKeyState(VK_LEFT)) {

    if (user.x > 0) {
        user.x -= Key;
    }
}
if (GetAsyncKeyState(VK_RIGHT)) {

    if (user.x <X-FY) {
        user.x += Key;
    }
}
if (GetAsyncKeyState(VK_SPACE)) {

    if (t2 - t1 > 70) {

        t1 = t2;
        创建子弹();
    }
}
t2 = GetTickCount();

发射子弹(0.5);

if (w2 - w1 > 300) {

    w1 = w2;

    创建敌人();
}
w2 = GetTickCount();

敌人显示(0.1);
击杀判断();
撞击判断();

}

void 初始化(){

if (GameOver)
{
    刷新显示();
    GetKey(0.5);
    FlushBatchDraw();
    初始化();
}

}

int main(){

initgraph(X, Y);
加载图片();
BeginBatchDraw();
初始化();
EndBatchDraw();

}

标签:int,练习,C++,boolz,++,master,user,新手,zidan
来源: https://blog.csdn.net/qq_24879175/article/details/113645495