因为个人的兴趣看着视频
自己敲的打飞机游戏
可能开存在某些bug
但是 可以提供参考

//创建打飞机的基本文件
//引入图形库的文件
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <time.h>
//枚举类型
enum my
{WIDTH = 570,HEIGHT=740,BULLEL_NUM=15,//子弹数量PLANE_NUM=10,//敌机数量BIG,SMALL
};
//存放飞机的数据
struct place {int x;//飞机的横向 位移int y;//飞机的竖向 位移bool live;//飞机的 生命
}player;//创建子弹的结构体
struct bullets {int x;//子弹的横向 位移int y;//子弹的竖向 位移bool live;//子弹的 生命
} bull[BULLEL_NUM];
//敌机的结构体
struct badplane {int x;//子弹的横向 位移int y;//子弹的竖向 位移bool live;//子弹的 生命int width;int height;int hp;int type;
} badPlane[PLANE_NUM];//接受图片你的类型
IMAGE bg;
IMAGE user;
IMAGE bullet;
IMAGE enemy[2];
//加载图片
void loadImg() {loadimage(&bg,"./images/bg1.jpg", WIDTH, HEIGHT);//使用 unicode 会报错//请使用 多字符集 项目->属性->高级->字符集->多字符集//加载飞机 userloadimage(&user, "./images/bg2.jpg", 120, 120);//加载子弹图片loadimage(&bullet, "./images/bg.jpg", 10, 24);//加载敌机的图片loadimage(&enemy[0], "./images/enemy.jpg", 45, 39);loadimage(&enemy[1], "./images/enemy1.jpg", 105, 130);
}
//随机初始敌机数据
void planeData(int i) {if (rand() %10 ==0)//0-9{badPlane[i].type = BIG;badPlane[i].width = 105;badPlane[i].height = 130;badPlane[i].hp = 3;}else{badPlane[i].type = SMALL;badPlane[i].width = 45;badPlane[i].height = 39;badPlane[i].hp = 1;}}
//定时器
bool timer(int time, int id) {static DWORD t[10];if (clock() - t[id] > time) {t[id] = clock();return true;}return false;}
//初始数据
void gameInit() {//加载东西loadImg();//初始化飞机的数据player.x = WIDTH / 2 - 60;player.y = HEIGHT - 120;player.live = true;//初始化子弹的数据for (int i = 0; i < BULLEL_NUM; i++){bull[i].x = 0;bull[i].y = 0;bull[i].live = false;}//初始化敌级机数据for (int i = 0; i < PLANE_NUM; i++){badPlane[i].live = false;planeData(i);}
}
//创建子弹
void createBullet() {for (int i = 0; i < BULLEL_NUM; i++){if (!bull[i].live) {bull[i].x = player.x+60;bull[i].y = player.y;bull[i].live = true;break;}}
}//画图
void DrawPlay() {//放置背景putimage(0, 0, &bg);//放置飞机putimage(player.x, player.y, &user);for (int i = 0; i < BULLEL_NUM; i++){if (bull[i].live) {putimage(bull[i].x, bull[i].y, &bullet);}}//绘制敌机for (int i = 0; i < PLANE_NUM; i++){if (badPlane[i].live) {if (badPlane[i].type==SMALL){putimage(badPlane[i].x, badPlane[i].y, &enemy[0]);}else{putimage(badPlane[i].x, badPlane[i].y, &enemy[1]);}}}}
//飞机移动
void playMove( int speed) {#if 0//方式一 使用_getch 获得键盘的数据 根据输入进行 改变飞机位置//解决阻塞 使用 _kbhid的获得键盘是否输入if (_kbhit()){char key = _getch();switch (key){case 'w':case 'W':player.y -= speed;break;case 'a':case 'A':player.x -= speed;break;case 's':case 'S':player.y += speed;break;case 'd':case 'D':player.x += speed;break;default:break;}}#elif 1//方式二移动GetAsyncKeyState 获得键盘的输入  用宏或大写//添加边界的设置if (GetAsyncKeyState(VK_UP) || GetAsyncKeyState('W')){//w 上一移动 当 y=0 就不能再网上了 只有>0 带能减 往上移动//>0 代表上面有空间 可以往上if (player.y>0) {player.y -= speed;}}if (GetAsyncKeyState(VK_DOWN) || GetAsyncKeyState('S')){//s 下面移动 当 y到 高度-飞机高度 的时候就不能往下了 否则飞机就出去了//if (player.y <HEIGHT-120){player.y += speed;}}if (GetAsyncKeyState(VK_LEFT) || GetAsyncKeyState('A')){//a 左边移动  x <=0 就不能移动了 否则就会出去了if (player.x>0){player.x -= speed;}}if (GetAsyncKeyState(VK_RIGHT) || GetAsyncKeyState('D')){//d 右边移动 当x > width-飞机宽度的时候 就不能移动 否则出去了if (player.x<WIDTH-120){player.x += speed;}}#endif // 0//按下 空格进行射击if (GetAsyncKeyState(VK_SPACE) && timer(40, 3)){createBullet();}
}
//子弹移动
void bulletMove() {for (int i = 0; i < BULLEL_NUM; i++){if (bull[i].live) {bull[i].y -= 1;if (bull[i].y < 0){bull[i].live = false;}}}}//创建敌机
void createEnemy() {for (int i = 0; i < PLANE_NUM; i++){if (!badPlane[i].live) {badPlane[i].live = true;badPlane[i].x = rand() % (WIDTH-70);badPlane[i].y = 0;planeData(i);break;}}
}
//敌机移动
void moveEnemy() {for (int i = 0; i < PLANE_NUM; i++){if (badPlane[i].live) {//if (timer(10)) {badPlane[i].y += 1;//}if (badPlane[i].y > HEIGHT){badPlane[i].live = false;}}}
}
//飞机的碰撞
void playgame() {//获得敌机数据for (int i = 0; i < PLANE_NUM; i++){if (!badPlane[i].live) {continue;}for (int k = 0; k < BULLEL_NUM; k++){if (!bull[i].live) {continue;}if (bull[k].x>badPlane[i].x && bull[k].x < badPlane[i].x+ badPlane[i].width&& bull[k].y>badPlane[i].y && bull[k].y < badPlane[i].y + badPlane[i].height){bull[k].live = false;badPlane[i].hp--;}}if (badPlane[i].hp<=0){badPlane[i].live = false;}}}int main() {//创建图形库的窗口initgraph(WIDTH, HEIGHT,SHOWCONSOLE);//画图//setfillcolor(GREEN);//fillcircle(50,50,50);gameInit();BeginBatchDraw();//让程序不关闭while (1) {DrawPlay();FlushBatchDraw();//移动函数playMove(1);//子弹移动//if (timer(10, 2))//{bulletMove();//}//敌机创建if (timer(500,0)){createEnemy();}if (timer(10, 1)){moveEnemy();}playgame();//printf("abc");}EndBatchDraw();return 0;
}

c 语言easyx图形库飞机大战的源码相关推荐

  1. 用Java实现简易的飞机大战---附源码和图片

    先看演示 Java简易飞机大战 源码链接:(内置图片) 此项目源码链接[百度网盘]提取码:1234https://pan.baidu.com/s/1EoBdg_47nYgLWgB6Zee9gg 一.基 ...

  2. python打飞机源码_python 飞机大战 游戏源码(pygame入门级)

    l 文件      35644  2018-09-21 12:27  飞机大战03\.idea\workspace.xml 文件        398  2018-09-19 09:42  飞机大战0 ...

  3. java swing飞机大战游戏(源码+视频+文档+ppt)

    该项目是由Java swing实现的一款小游戏飞机大战,模仿的是微信版的飞机大战之打飞机小游戏,可在Java环境下运行,jdk版本不限,非常适合Java学习者参考学习,此外附带有视频导入教程,手把手教 ...

  4. c语言小游戏-飞机大战

    今天我们来尝试用easyx图形库实现c语言小游戏-飞机大战(源代码和图片已经在结尾给出) 先引用头文件 #include<stdio.h> #include<time.h>// ...

  5. C语言飞机大战程序思路,C语言代码实现飞机大战

    本文实例为大家分享了C语言实现简单飞机大战的具体代码,供大家参考,具体内容如下 这个游戏的功能很单一,也就是"飞机大战",哈哈哈哈.总共只有300多行代码左右,你也可以想想它会有多 ...

  6. 自动发射子弹c语言,C语言代码实现飞机大战

    本文实例为大家分享了C语言实现简单飞机大战的具体代码,供大家参考,具体内容如下 这个游戏的功能很单一,也就是"飞机大战",哈哈哈哈.总共只有300多行代码左右,你也可以想想它会有多 ...

  7. 飞机大战C语言代码百度云,C语言代码实现飞机大战

    本文实例为大家分享了C语言实现简单飞机大战的具体代码,供大家参考,具体内容如下 这个游戏的功能很单一,也就是"飞机大战",哈哈哈哈.总共只有300多行代码左右,你也可以想想它会有多 ...

  8. 坦克大战java源码分析(上)

    坦克大战源码分析 一.mytank07.java文件分析 注:至上而下将不懂的语句.结构体含义.代码作用等作出解释: 1.包的使用 package com.haiding.tank_7; 包语句的语法 ...

  9. python在abaqus中的应用代码下载_Python-(source-code)-in--Abaqus Python语言在Abaqus中的应用(源码) - 下载 - 搜珍网...

    Python语言在Abaqus中的应用 (源码)/ Python语言在Abaqus中的应用 (源码)/Python语言在Abaqus中的应用 (源码)/ Python语言在Abaqus中的应用 (源码 ...

最新文章

  1. centos php sftp 扩展,Linux(CentOS)上配置 SFTP
  2. SAP产品和微信的结合
  3. 如何测试程序是否_软件开发过程中,如何进行自动化测试?Unit Test 和 UI Test
  4. 团队项目第一篇——NABCD
  5. MySQL 常见的开放性问题
  6. 一篇博客读懂设计模式之-----策略模式
  7. 程序员7天长假出游指南
  8. ReplicaStateMachine分析
  9. Android开发之动态创建多个按钮
  10. transformClassesWithProfilers-transformForDebug
  11. windows7 android 驱动,Windows7安卓刷机驱动安装教程图文详解
  12. python爬取淘宝评论_抓取淘宝某产品评论(附视频教程)
  13. Axure RP最新授权码
  14. 采购入库单部分结算时是否自动暂估 参数 是的情况下
  15. 县级外业调查及举证软件_MapGIS第三次国土调查系列产品
  16. 最基本的几种 CSS 文字滤镜效果 - 蓝色理想
  17. Centos 普通用户su到root用户提示错误
  18. 计算机桌面壁纸小,电脑的桌面壁纸大小怎么设置
  19. 百度网盘助手-获取网盘文件的下载地址,破解限速
  20. 免费的天气API接口

热门文章

  1. 智学网服务器文件,智学网查分登录不上怎么回事?智学网登录不上的原因与解决办法[图]...
  2. 计算机三级网络技术过几条件,2017计算机三级网络技术十大必记语句
  3. AMT说产业互联网络
  4. SecureCRT中文乱码、复制粘贴乱码解决办法
  5. GUI程序中添加控制台调试
  6. 月份加日期前面用on还是in_年月日前什么时候用in,什么时候用on
  7. 电子科大和北邮计算机,同为IT名校,北京邮电大学和电子科技大学谁更胜一筹?...
  8. 详细设计说明书(GB8567——88)
  9. 解放双手,Windows Admin Center简化服务器管理
  10. 只有学历没有学位证的研究生_没有研究生学位就进入数据科学