狗头大战,飞机大战改编版本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、当子弹位置与敌机位置重合时,子弹消失,敌机状态发生改变。
狗头大战,飞机大战改编版本c++相关推荐
- c语言小程序飞机大战,飞机大战微信小游戏:经典像素飞机大战小程序,点开即玩...
50000+游戏爱好者已加入我们! 每天推荐好玩游戏! 关注我们,沐沐带你发现好游戏! <经典像素飞机大战>游戏小程序好玩吗? <经典像素飞机大战>小游戏怎么玩? 怎么进入&l ...
- 小甲鱼python游戏代码_【小甲鱼】零基础学习python pygame 飞机大战可执行源代码...
[实例简介] [小甲鱼]零基础学习python pygame 飞机大战可执行源代码,觉得挺有意思,故此分享. [实例截图] [核心代码] 飞机大战 └── 飞机大战 ├── bullet.py ├── ...
- 【Java代码实现飞机大战小游戏】简单理解
飞机大战 飞机大战小游戏历经10天完成,主要用到的就是我们面向对象部分的知识:类,封装,继承,多态,静态代码块等等内容+swing部分内容.所以即使你是java小白,也不用担心欧! 游戏说明:游戏有3 ...
- 飞机大战小游戏1.0版本
小时候大家应该都玩过飞机大战吧,这就是仿的一个飞机大战,但是没有写的很全,只能玩一次,死掉之后需要刷新页面玩第二次,话不说多,上代码: 初始页面: 整个的html代码还是很少,如下: <div ...
- 太空射击unity工程素材文件 飞机大战 飞行射击游戏源码(C#,Unity2019.2.4f1)素材+源码 最新写的,demo简单版本
飞机大战素材 太空大战unity工程文件 飞行射击游戏源码(C#,Unity2019.2.4f1)素材+源码 最新写的,demo简单版本 希望能对初学者提供帮助,代码根据教材以及out了的代码更新了, ...
- python飞机大战联网版_Python 飞机大战搞怪版本
python 飞机大战搞怪版本 (飞机为迷你亚索,外星人为迷你小诺手,由于时间关系和图片素材较难寻找,仅仅做了简易版,没有贴上背景图片.由于篇幅原因,对于函数讲解较为简略,可以自行搜索相应函数的用法) ...
- 2020-10-19。小白自学:飞机大战源码改造。(新手入门,学习总结。从零开始,步步为营。不同版本,独立运行。完整代码,感谢原著。)
#简介: #小白自学:飞机大战源码改造.(新手入门,学习总结.) #从零开始:完全重写代码框架.(步步为营,完整代码.) #简单就好:删除各种自定函数.(讨厌函数跳转,喜欢层次分明.) #文本归一:方 ...
- python飞机大战联网版_Python实现飞机大战(搞怪)游戏!这是你没见过的全新版本!...
(飞机为迷你亚索,外星人为迷你小诺手,由于时间关系和图片素材较难寻找,仅仅做了简易版,没有贴上背景图片.由于篇幅原因,对于函数讲解较为简略,可以自行搜索相应函数的用法) 主要利用pygame内置库进行 ...
- Python实现飞机大战(搞怪)游戏!这是你没见过的全新版本!
(飞机为迷你亚索,外星人为迷你小诺手,由于时间关系和图片素材较难寻找,仅仅做了简易版,没有贴上背景图片.由于篇幅原因,对于函数讲解较为简略,可以自行搜索相应函数的用法) 主要利用pygame内置库进行 ...
最新文章
- [转载]为什么使用 SLF4J 而不是Log4J来做Java 日志
- 【codevs1946】【BZOJ2434】阿狸的打字机,AC自动机练习
- 《Java编码指南:编写安全可靠程序的75条建议》—— 指南19:对细粒度的安全定义自定义安全权限...
- mysql cpu高 重启无效_解决mysqlcpu高的问题
- 国内首个 App SDK 国家标准成功立项;苹果意外泄露iPhone 12发布时间;TypeScript 4.0 发布| 极客头条
- docker update_windows 10 安装docker
- 用ASP设计购物推车
- Steve Yegge -Execution in the Kingdom of Nouns
- 精通JavaScript+jQuery:100%动态网页设计密码 中文PDF扫描版
- linux环境(centos7.3)下安装Xilinx FPGA以及烧录算法教程
- ps怎么加底部阴影_ps影子(ps物体底部阴影怎么做)
- 【题目】两个整数相除得到循环小数,求循环节
- 18-基于STM32的室内可见光通信系统设计
- 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明
- 交换机二/三层转发原理
- Zabbix内网监控外网阿里云主机
- 递归-PTA循环日程表
- RJS 模板的另种用法
- 压缩pdf大小的方法?怎样压缩pdf大小?pdf文档怎么压缩?pdf文件太大怎么压缩?pdf文件太大怎么压缩成小内存?如何降低pdf文件大小?怎么把pdf文件压缩到指定大小?压缩pdf的简单方法
- MTK IMS框架简析(2)——IMS注册过程