C/C++项目源码分享——飞机大战

这是我自己写的一个飞机大战的源码,目前还没有完善,只写了我方飞机和敌方飞机,通过上下左右四个箭头控制我方飞机行动,按空格键,飞机发射子弹。可自行加入其它功能,比如子弹敌机碰撞之后爆炸。下面是我写了的项目源码。

  plane.cpp

```cpp

#include "plane.h"

Plane::Plane()

{

}

Plane::Plane(int x, int y, char *imgURL, char *imgURLY, int speed)

{

this->x = x;

this->y = y;

loadimage(img + 1, imgURL); //背景图

loadimage(img + 0, imgURLY);

this->speed = speed;

}

void Plane::drawPlane() //画飞机

{

//SRCAND 方式贴掩码图

putimage(x, y, img + 0,SRCAND);

//SRCPAIN方式贴图背景图

putimage(x, y, img + 1, SRCPAINT);

}

void Plane::keyDown(char userKey) //按键操作

{

switch (userKey)

{

case 'w':

case 'W':

case 72:

this->y -= this->speed;

break;

case 'S':

case 's':

case 80:

this->y += this->speed;

break;

case 'a':

case 'A':

case 75:

this->x -= this->speed;

break;

case 'd':

case 'D':

case 77:

this->x += this->speed;

break;

}

}

int& Plane::getX() //得到飞机的x坐标

{

return x;

}

int& Plane::getY() //得到飞机的y坐标

{

return y;

}

int& Plane::getSpeed() //得到飞机的速度

{

return speed;

}

void Plane::movePlane()

{

this->y += this->speed;

}

```

bullet.cpp

```cpp

#include "bullet.h"

Bullet::Bullet()

{

}

Bullet::Bullet(int x, int y, char *imgURL, char *imgURLY, int speed)

{

this->x = x;

this->y = y;

this->speed = speed;

loadimage(img + 1, imgURL);

loadimage(img + 0, imgURLY);

}

void Bullet::drawBullet() //画飞机

{

putimage(x, y, img + 0, SRCAND);

putimage(x, y, img + 1, SRCPAINT);

}

void Bullet::moveBullet()

{

this->y -= this->speed;

}

int& Bullet::getX() //得到飞机的x坐标

{

return x;

}

int& Bullet::getY() //得到飞机的y坐标

{

return y;

}

int& Bullet::getSpeed() //得到飞机的速度

{

return speed;

}

```

test.cpp

```cpp

#include "plane.h"

#include "bullet.h"

#include <conio.h>

#include <time.h>

#include <list>

using namespace std;

/*

1.创建窗口

2.显示图片

2.1 为图片起名字

int  iNum;  存放

IMAGE img; //起一个名字

2.2 把名字分配给图片

loadimage(&img,"图片路径");

2.3 显示图片

putimage(x,y,&img);

*/

//敌机的图片路径

char planeName1[2][20] = { "resources\\1.bmp", "resources\\1y.bmp" };

char planeName2[2][20] = { "resources\\2.bmp", "resources\\2y.bmp" };

char planeName3[2][20] = { "resources\\3.bmp", "resources\\3y.bmp" };

void 画图函数()

{

}

int main()

{

int  整数 = 1001;

srand((unsigned int)time(NULL));

initgraph(800, 800);

IMAGE background;

loadimage(&background, "resources\\background.bmp");

Plane *pRole = new Plane(300, 800 - 70, "resources\\role.bmp", "resources\\roley.bmp", 10);

list<Plane *> myPlane; //创建链表

list<Plane *>::iterator iterPlane;

list<Bullet*> myBullet;

list<Bullet*>::iterator iterBullet;

Plane  *pObject = NULL;

Bullet *pBullet = NULL;

while (1)

{

BeginBatchDraw();

putimage(0, 0, &background);

if (myPlane.size() < 3)

{

int pos = rand() % 3; //0-1-2

switch (pos)

{

case 0:

pObject = new Plane(rand() % 6 * 100+100, -100, planeName1[0], planeName1[1], 1);

break;

case 1:

pObject = new Plane(rand() % 6 * 100+100, -200, planeName2[0], planeName2[1], 1);

break;

case 2:

pObject = new Plane(rand() % 6 * 100+100, -200, planeName3[0], planeName3[1], 1);

break;

}

myPlane.push_back(pObject);

}

pRole->drawPlane();

if (_kbhit())

{

char userKey = _getch();

pRole->keyDown(userKey);

if (userKey == ' ')

{

pBullet = new Bullet(pRole->getX(), pRole->getY() - 25, "resources\\bullet.bmp", "resources\\bullety.bmp", 1);

myBullet.push_back(pBullet);

}

}

for (iterPlane = myPlane.begin(); iterPlane != myPlane.end(); iterPlane++)

{

(*iterPlane)->drawPlane();

(*iterPlane)->movePlane();

}

for (iterPlane = myPlane.begin(); iterPlane != myPlane.end(); iterPlane++)

{

if ((*iterPlane)->getY() >= 800)

{

iterPlane=myPlane.erase(iterPlane);

if (iterPlane == myPlane.end())

{

break;

}

}

}

for (iterBullet = myBullet.begin(); iterBullet != myBullet.end(); iterBullet++)

{

(*iterBullet)->drawBullet();

(*iterBullet)->moveBullet();

}

EndBatchDraw();

}

_getch();

closegraph();

return 0;

}

```

以上就是我飞机大战的源码,欢迎大家来讨论。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容