900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 狗头大战 飞机大战改编版本c++

狗头大战 飞机大战改编版本c++

时间:2020-08-24 08:21:07

相关推荐

狗头大战 飞机大战改编版本c++

源码来自罗德岛公共休息室的《C语言/C++经典游戏项目教程—飞机大战,非常适合小白入门练习》。

将敌机的飞机模型改成了狗头表情包,因为某人经常给我发狗头,我就想要做一个打爆狗头的小程序,哼!!

游戏开始界面:

飞机发射子弹

狗头被击打后

本代码编程使用的软件为Vistual Studio,感觉没有pycharm好用,不过用习惯了也还好吧。

完整代码如下:

#include <easyx.h>#include <stdio.h>#include <time.h>#include <conio.h>using namespace std;#define bu_num 15 //子弹数量#define enemy_num 1void createbu();//加载玩家IMAGE img_gamer[2];IMAGE img_bk;IMAGE img_bu[2];IMAGE img_en[5];void loadsource() {//加载图片loadimage(&img_bk, "resource/image/background.png");loadimage(img_gamer+0, "resource/image/me2.png");loadimage(img_gamer+1, "resource/image/me1.png");loadimage(img_bu+0, "resource/image/bullet2.png");loadimage(img_bu + 1, "resource/image/bullet1.png");loadimage(img_en + 0, "resource/image/shimo12.png");loadimage(img_en + 1, "resource/image/shimo13.png");loadimage(img_en + 2, "resource/image/shimo14.png");loadimage(img_en + 3, "resource/image/shimo15.png");loadimage(img_en + 4, "resource/image/shimo16.png");}//自定义定时器bool Timer(int ms, int id) {static int start[5];int end = clock();if (end - start[id] >= ms) {start[id] = end;return true;}return false;}struct Plane {int x;int y;bool isDie;int frame;}gamer;Plane enemy[enemy_num];//初始化函数void plane_init(Plane* pthis,int x,int y) {pthis->x = x;pthis->y = y;pthis->isDie = false;pthis->frame = 0;}void plane_draw(Plane* pthis) {putimage(pthis->x, pthis->y, img_gamer + pthis->frame);pthis->frame = (pthis->frame + 1) % 2;}//移动飞机void plane_move(Plane* pthis) {int speed = 3;if(GetAsyncKeyState(VK_UP)){pthis->y-=speed;}if (GetAsyncKeyState(VK_DOWN)){pthis->y+=speed;}if (GetAsyncKeyState(VK_LEFT)){pthis->x-=speed;}if (GetAsyncKeyState(VK_RIGHT)){pthis->x+=speed;}if (GetAsyncKeyState(VK_SPACE)&&Timer(100,0) ){createbu();}}//子弹结构struct Bu {int x;int y;bool isDie;}bullet[bu_num] = { 0 };//创建子弹void createbu() {for (int i = 0;i < bu_num;i++){if (bullet[i].isDie){bullet[i].x = gamer.x + 51;bullet[i].y = gamer.y ;bullet[i].isDie = false;break;}}}//子弹移动void moveBu() {for (int i = 0;i < bu_num;i++){if (!bullet[i].isDie) {bullet[i].y -= 4;}//如果子弹跑出窗口,让他消失if (bullet[i].y < 0) {bullet[i].isDie = true;}}}//狗头爆炸void boom() {for (int i = 0;i < enemy_num;i++){if (!enemy[i].isDie)putimage(enemy[i].x, enemy[i].y, img_en + 0);putimage(enemy[i].x, enemy[i].y, img_en + 1);putimage(enemy[i].x, enemy[i].y, img_en + 2);putimage(enemy[i].x, enemy[i].y, img_en + 3);putimage(enemy[i].x, enemy[i].y, img_en + 4);enemy[i].isDie = true;}}//创建狗头void createenemy() {for (int i = 0;i < enemy_num;i++){if (enemy[i].isDie){enemy[i].x = rand()%getwidth();enemy[i].y = 82;enemy[i].isDie = false;break;}}}void zhuangji() {for (int i = 0;i < bu_num;i++) {for (int k = 0;k < enemy_num;k++) {if (bullet[i].y > enemy[k].y && bullet[i].x < enemy[k].x+ 40 && bullet[i].x > enemy[k].x && bullet[i].y < enemy[k].y + 40){bullet[i].isDie = true;boom();}}}}void moveenemy() {for (int i = 0;i < enemy_num;i++){if (!enemy[i].isDie){enemy[i].y += 2; if (enemy[i].y > getheight()){enemy[i].isDie = true;}}}}//初始化玩家void init() {srand(GetTickCount());loadsource();plane_init(&gamer,(getwidth() - 102)/2, getheight()-126);//初始化子弹for (int i = 0;i < bu_num;i++){bullet[i].isDie = true;}//初始化狗头for (int i = 0;i < enemy_num;i++){enemy[i].isDie = true;}}//绘制界面void draw() {//输出图片putimage(0, 0, &img_bk);plane_draw(&gamer);//绘制子弹for (int i = 0;i < bu_num;i++){if(!bullet[i].isDie)putimage(bullet[i].x, bullet[i].y, img_bu+1);}for (int i = 0;i < enemy_num;i++){if (!enemy[i].isDie)putimage(enemy[i].x, enemy[i].y, img_en + 0);}}int main() {//创建窗口initgraph(480,560);init();while (1) {int starttime = clock();//获取程序执行到调用函数所经过的毫秒数draw();plane_move(&gamer);moveBu();if (Timer(800, 0)) {createenemy();}moveenemy();zhuangji();int frametime = clock() - starttime;if (1000 / 60 - frametime > 0) {Sleep(1000 / 60 - frametime);}}getchar();return 0;}

主要思路是

1、制作飞机,子弹,敌机。

2、定义飞机坐标,子弹坐标,敌机坐标。

3、键盘上下左右空格对应飞机移动和发射子弹。

4、敌机出现位置随机,位置会随时间变化向下移动。

5、子弹位置随时间变化向上移动。

6、当子弹位置与敌机位置重合时,子弹消失,敌机状态发生改变。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。