源码来自罗德岛公共休息室的《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、当子弹位置与敌机位置重合时,子弹消失,敌机状态发生改变。

狗头大战,飞机大战改编版本c++相关推荐

  1. c语言小程序飞机大战,飞机大战微信小游戏:经典像素飞机大战小程序,点开即玩...

    50000+游戏爱好者已加入我们! 每天推荐好玩游戏! 关注我们,沐沐带你发现好游戏! <经典像素飞机大战>游戏小程序好玩吗? <经典像素飞机大战>小游戏怎么玩? 怎么进入&l ...

  2. 小甲鱼python游戏代码_【小甲鱼】零基础学习python pygame 飞机大战可执行源代码...

    [实例简介] [小甲鱼]零基础学习python pygame 飞机大战可执行源代码,觉得挺有意思,故此分享. [实例截图] [核心代码] 飞机大战 └── 飞机大战 ├── bullet.py ├── ...

  3. 【Java代码实现飞机大战小游戏】简单理解

    飞机大战 飞机大战小游戏历经10天完成,主要用到的就是我们面向对象部分的知识:类,封装,继承,多态,静态代码块等等内容+swing部分内容.所以即使你是java小白,也不用担心欧! 游戏说明:游戏有3 ...

  4. 飞机大战小游戏1.0版本

    小时候大家应该都玩过飞机大战吧,这就是仿的一个飞机大战,但是没有写的很全,只能玩一次,死掉之后需要刷新页面玩第二次,话不说多,上代码: 初始页面: 整个的html代码还是很少,如下: <div ...

  5. 太空射击unity工程素材文件 飞机大战 飞行射击游戏源码(C#,Unity2019.2.4f1)素材+源码 最新写的,demo简单版本

    飞机大战素材 太空大战unity工程文件 飞行射击游戏源码(C#,Unity2019.2.4f1)素材+源码 最新写的,demo简单版本 希望能对初学者提供帮助,代码根据教材以及out了的代码更新了, ...

  6. python飞机大战联网版_Python 飞机大战搞怪版本

    python 飞机大战搞怪版本 (飞机为迷你亚索,外星人为迷你小诺手,由于时间关系和图片素材较难寻找,仅仅做了简易版,没有贴上背景图片.由于篇幅原因,对于函数讲解较为简略,可以自行搜索相应函数的用法) ...

  7. 2020-10-19。小白自学:飞机大战源码改造。(新手入门,学习总结。从零开始,步步为营。不同版本,独立运行。完整代码,感谢原著。)

    #简介: #小白自学:飞机大战源码改造.(新手入门,学习总结.) #从零开始:完全重写代码框架.(步步为营,完整代码.) #简单就好:删除各种自定函数.(讨厌函数跳转,喜欢层次分明.) #文本归一:方 ...

  8. python飞机大战联网版_Python实现飞机大战(搞怪)游戏!这是你没见过的全新版本!...

    (飞机为迷你亚索,外星人为迷你小诺手,由于时间关系和图片素材较难寻找,仅仅做了简易版,没有贴上背景图片.由于篇幅原因,对于函数讲解较为简略,可以自行搜索相应函数的用法) 主要利用pygame内置库进行 ...

  9. Python实现飞机大战(搞怪)游戏!这是你没见过的全新版本!

    (飞机为迷你亚索,外星人为迷你小诺手,由于时间关系和图片素材较难寻找,仅仅做了简易版,没有贴上背景图片.由于篇幅原因,对于函数讲解较为简略,可以自行搜索相应函数的用法) 主要利用pygame内置库进行 ...

最新文章

  1. [转载]为什么使用 SLF4J 而不是Log4J来做Java 日志
  2. 【codevs1946】【BZOJ2434】阿狸的打字机,AC自动机练习
  3. 《Java编码指南:编写安全可靠程序的75条建议》—— 指南19:对细粒度的安全定义自定义安全权限...
  4. mysql cpu高 重启无效_解决mysqlcpu高的问题
  5. 国内首个 App SDK 国家标准成功立项;苹果意外泄露iPhone 12发布时间;TypeScript 4.0 发布| 极客头条
  6. docker update_windows 10 安装docker
  7. 用ASP设计购物推车
  8. Steve Yegge -Execution in the Kingdom of Nouns
  9. 精通JavaScript+jQuery:100%动态网页设计密码 中文PDF扫描版
  10. linux环境(centos7.3)下安装Xilinx FPGA以及烧录算法教程
  11. ps怎么加底部阴影_ps影子(ps物体底部阴影怎么做)
  12. 【题目】两个整数相除得到循环小数,求循环节
  13. 18-基于STM32的室内可见光通信系统设计
  14. 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明
  15. 交换机二/三层转发原理
  16. Zabbix内网监控外网阿里云主机
  17. 递归-PTA循环日程表
  18. RJS 模板的另种用法
  19. 压缩pdf大小的方法?怎样压缩pdf大小?pdf文档怎么压缩?pdf文件太大怎么压缩?pdf文件太大怎么压缩成小内存?如何降低pdf文件大小?怎么把pdf文件压缩到指定大小?压缩pdf的简单方法
  20. MTK IMS框架简析(2)——IMS注册过程

热门文章

  1. java-net-php-python-jspm行政办公自动化计算机毕业设计程序
  2. iOS App查看Log:通过iTunes获取真机沙盒中文件
  3. 软件破解(1)-Java篇
  4. Python如何生成随机数——random随机数模块的应用
  5. 包子笔记 - 知己的重要性
  6. 修改ssg5网络接入方式
  7. 我的世界拔刀剑java要求_我的世界1.7.10用拔刀剑征服世界整合包
  8. node项目使用log4js记录日志
  9. node.js 学习笔记(二)模板引擎和C/S渲染
  10. word树状分支图_肝脏超声声像图表现及常用正常值