接下来,我们需要在进行以下操作:

1.在程序里面添加敌机

2.为敌机添加基本属性

————————————————————————————————————————

NO.1  在程序里面添加敌机

国际惯例,我们需要对敌机的位置设置一个初始值

int enemy_x = 0;
int enemy_y = weight/2;

其中敌机的Y轴坐标根据之前的博客设定为weight的一半,当然,你也可以自己随意设定任何位置

初始化之后,我们就可以在把敌机显示在窗口上

for(int i=0;i<height;i++){for(int j=0;j<weight;j++){if((i == enemy_x) && (j == enemy_y))printf("O");else printf(" ");}printf("\n");}

编译结果可以看出,我们的敌机“O”出现在飞机的正上方

第一步非常地简单,我们很快就把敌机给显示出来了

—————————————————————————————————————————————————————

然而,简单地把敌机显示出来并不能为我们带来游戏的体验,我们还需要在激光打中敌机时,我们的敌机需要消失,才能显示出这个游戏的意义

—————————————————————————————————————————————————————

No.2 为敌机添加基本属性

Step1:敌机消失机制

我们可以设定为,当激光的坐标位置和敌机的坐标位置恰好相等时,敌机和激光都置于窗口坐标轴外

根据这种设想,我们可以添加以下代码,并实验是否可行

if((bullet_x == enemy_x) && (bullet_y == enemy_y)){enemy_x = enemy_y = -1;bullet_x = bullet_y = -1;}

编译结果可知,当激光发射到敌机位置时,敌机和激光都消失了,敌机初步设定完成

Step2:敌机随机生成

当敌机被消灭时,我们还需要不断地补充敌机,才能让游戏继续下去

这时我们可以使用随机函数rand()来让敌机的位置随机确定,使得根据游戏性

但如果我们在使用随机函数时,之前确定的位置便不能再用,所以,我们对激光消灭敌机时的位置进行重新调整

 if((bullet_x == enemy_x) && (bullet_y == enemy_y)){enemy_x = 0;enemy_y = rand() % weight;bullet_x = bullet_y = -1;}

实验结果可知,当敌机被消灭时,程序会随机在某个位置再次生成敌机,以确保游戏性

Step3:敌机下落

如果敌机只是简单地固定于某个位置时,我们的难度将不是很大,所以,我们需要给敌机添加一个下落的属性,使得游戏难度增加

而在设定下落时,我们需要知道,当敌机下落到超出游戏窗口范围时,我们应该怎么办

在这里,我们可以设定:当敌机超出窗口范围时,敌机位置重新恢复到初始化状态,程序再次生成新的敌机

所以应当添加以下代码

if(enemy_x > height){enemy_x = 0;enemy_y = rand() % weight;}else{enemy_x ++;}

编译结果可以看到,效果和我们想象中的差不多,但是有点不一样:下落速度过快

这样的结果会让飞机还没到达规定的位置,敌机就已经下落出窗口

为此,我们还需要对敌机的下落速度进行限制

 if(enemy_x > height){enemy_x = 0;enemy_y = rand() % weight;}else{static int speed = 0;if(speed < 7)speed ++ ;if(speed == 7){enemy_x ++;speed = 0;}  }

从编译效果,敌机下落速度有明显的降低

————————————————————————————————————————————————————

至此,我们的小程序飞机游戏也就基本完成,但程序仍有很多需要改进的地方

比如  敌机碰到飞机后,需要有些什么样的反应?

在击落敌机后,是否需要显示分数和时间?

是否可以根据关卡来设置不同的难度?

............................................................

而更多的问题,仍需要在以后的时间里继续完善,使得一款完美的游戏真正地诞生于自己手里

【c语言】小程序游戏——飞机游戏(三)相关推荐

  1. H5网页游戏(js),游戏小程序,网页游戏引擎

    采用了Three.js作为3D引擎库,结合tween.js作为配套的动画库,以及基于webpack的脚手架nowa链接作为技术支持.市面上比较成熟的3D库有Three.js和Babylon.js. B ...

  2. Andriod小程序——简单制作游戏中控制任务移动的轮盘

    Andriod小程序--简单制作游戏中控制人物移动的轮盘 说明 自定义自己的view继承于View类 重写onDraw()方法 当我们看到这个控件的时候那个样子,如图 完善onDraw()方法 重写O ...

  3. 微信小程序开发的游戏《拼图游戏》

    微信小程序开发的游戏<拼图游戏> 代码直接考进去就能用 pintu.js // pintu.js Page({/*** 页面的初始数据*/data: {},initGame: functi ...

  4. c语言小程序(编程c++和python的区别)

    c语言小程序例题,大师看看怎么办? 写入三角形的三条边a, b, c,假如能构成1个三角形,输出面积area 和周长perimeter(保留2 位小数):否则,输出"These sides ...

  5. c语言小程序作业,c语言小程序(c语言简单小程序代码)

    所以特此求经典C语言小程序.谢谢大家的关注!!! #include #include void function(int n){ int i,j,k,x=0; for(i=1;i<=n;i++) ...

  6. 常用c语言小程序,c语言经典小程序汇总大全

    网上有很多的人说编程有多么多么无聊,其实:不要管别人怎么说,别人说什么,做你自己喜欢做的事就好.坚持下来,你会发现编程的乐趣的.当然,如果你觉得学习编程语言很痛苦,坚持了一段时间后无果,南无果断放弃未 ...

  7. 麻雀虽小,五脏俱全——由C语言小程序深入学习软件工程和设计开发规范

    苏思畅 - 原创作品转载请注明出处 - <软件工程(C编码实践篇)>MOOC课程 http://mooc.study.163.com/course/USTC-1000002006 一.课程 ...

  8. GitChat · 移动开发 | 小程序快速上手:三步完成小程序从无到有的开发

    GitChat 作者:极笔北客 原文: 小程序快速上手:三步完成小程序从无到有的开发 关注微信公众号:GitChat 技术杂谈 ,这里一本正经的讲技术 小程序作为微信之父张小龙钦点,并多次公开为之宣传 ...

  9. c语言万年历查询程序代码,C语言小程序实现万年历

    分享一个简单的小程序,看看如何打印万年历吧~ 程序打开时时这样的,输入一个年份: 比如输入2016再回车,效果如下: 下面我们来看看实现这个程序的代码吧: #include #include #def ...

  10. 中国象棋c语言源代码csdn,中国象棋源代码-C语言小程序

    中国象棋源代码-C语言小程序 (11页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 .*--------------------ches ...

最新文章

  1. python学精通要多久-零基础零经验自学Python,到精通Python要多久啊?
  2. 数据结构实验之查找四:二分查找(递归实现和while循环实现)
  3. mysqld与mysqld_safe的区别
  4. ASP金额转人民币大写的函数
  5. 服务端自动集成-山寨版
  6. HttpContext.Current.Session.SessionID相关问题及备忘
  7. Lc5-最长回文字串
  8. 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)(转)...
  9. linux 复制文件_使用 rsync 复制大文件的一些误解 | Linux 中国
  10. ubuntu17.04 UHD 驱动出错
  11. 【经验分享】如何将拍摄的照片制作成扫描件 PS+WORD教程
  12. 变色龙引导启动看不到Mac分区盘符的解决办法
  13. matlab小波变换学习入门
  14. Error while extracting response for type
  15. CSS 选择器(超级详细,欢迎补充)
  16. Few-Shot Object Detection with Fully Cross-Transformer论文精读
  17. 如何测试硬盘软件,如何进行硬盘测试?磁盘健康检测方法介绍
  18. 老杨说运维 | 农信行业运维数字化和智能化转型实践分享
  19. 解决ESP32 驱动 28BYJ-48 步进电机反向不转之震动的问题
  20. jasper在JSP中导出pdf和xls

热门文章

  1. 商品秒杀问题的解决方案
  2. [转帖]程序开发工具
  3. 数学建模——数据分析、描述性统计
  4. 串口的认识(COM接口)
  5. 身家200亿到入狱,中国股神的悲壮人生
  6. DIY可视化导出uni-app源码生成器
  7. 滑动平均滤波器与CIC滤波器
  8. 聚类 轮廓 matlab,聚类分析 - MATLAB Simulink Example - MathWorks 中国
  9. 《CISP》易错点记录
  10. Odoo 16 企业版手册 - CRM (3)