【c语言】小程序游戏——飞机游戏(三)
接下来,我们需要在进行以下操作:
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语言】小程序游戏——飞机游戏(三)相关推荐
- H5网页游戏(js),游戏小程序,网页游戏引擎
采用了Three.js作为3D引擎库,结合tween.js作为配套的动画库,以及基于webpack的脚手架nowa链接作为技术支持.市面上比较成熟的3D库有Three.js和Babylon.js. B ...
- Andriod小程序——简单制作游戏中控制任务移动的轮盘
Andriod小程序--简单制作游戏中控制人物移动的轮盘 说明 自定义自己的view继承于View类 重写onDraw()方法 当我们看到这个控件的时候那个样子,如图 完善onDraw()方法 重写O ...
- 微信小程序开发的游戏《拼图游戏》
微信小程序开发的游戏<拼图游戏> 代码直接考进去就能用 pintu.js // pintu.js Page({/*** 页面的初始数据*/data: {},initGame: functi ...
- c语言小程序(编程c++和python的区别)
c语言小程序例题,大师看看怎么办? 写入三角形的三条边a, b, c,假如能构成1个三角形,输出面积area 和周长perimeter(保留2 位小数):否则,输出"These sides ...
- c语言小程序作业,c语言小程序(c语言简单小程序代码)
所以特此求经典C语言小程序.谢谢大家的关注!!! #include #include void function(int n){ int i,j,k,x=0; for(i=1;i<=n;i++) ...
- 常用c语言小程序,c语言经典小程序汇总大全
网上有很多的人说编程有多么多么无聊,其实:不要管别人怎么说,别人说什么,做你自己喜欢做的事就好.坚持下来,你会发现编程的乐趣的.当然,如果你觉得学习编程语言很痛苦,坚持了一段时间后无果,南无果断放弃未 ...
- 麻雀虽小,五脏俱全——由C语言小程序深入学习软件工程和设计开发规范
苏思畅 - 原创作品转载请注明出处 - <软件工程(C编码实践篇)>MOOC课程 http://mooc.study.163.com/course/USTC-1000002006 一.课程 ...
- GitChat · 移动开发 | 小程序快速上手:三步完成小程序从无到有的开发
GitChat 作者:极笔北客 原文: 小程序快速上手:三步完成小程序从无到有的开发 关注微信公众号:GitChat 技术杂谈 ,这里一本正经的讲技术 小程序作为微信之父张小龙钦点,并多次公开为之宣传 ...
- c语言万年历查询程序代码,C语言小程序实现万年历
分享一个简单的小程序,看看如何打印万年历吧~ 程序打开时时这样的,输入一个年份: 比如输入2016再回车,效果如下: 下面我们来看看实现这个程序的代码吧: #include #include #def ...
- 中国象棋c语言源代码csdn,中国象棋源代码-C语言小程序
中国象棋源代码-C语言小程序 (11页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 .*--------------------ches ...
最新文章
- python学精通要多久-零基础零经验自学Python,到精通Python要多久啊?
- 数据结构实验之查找四:二分查找(递归实现和while循环实现)
- mysqld与mysqld_safe的区别
- ASP金额转人民币大写的函数
- 服务端自动集成-山寨版
- HttpContext.Current.Session.SessionID相关问题及备忘
- Lc5-最长回文字串
- 深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)(转)...
- linux 复制文件_使用 rsync 复制大文件的一些误解 | Linux 中国
- ubuntu17.04 UHD 驱动出错
- 【经验分享】如何将拍摄的照片制作成扫描件 PS+WORD教程
- 变色龙引导启动看不到Mac分区盘符的解决办法
- matlab小波变换学习入门
- Error while extracting response for type
- CSS 选择器(超级详细,欢迎补充)
- Few-Shot Object Detection with Fully Cross-Transformer论文精读
- 如何测试硬盘软件,如何进行硬盘测试?磁盘健康检测方法介绍
- 老杨说运维 | 农信行业运维数字化和智能化转型实践分享
- 解决ESP32 驱动 28BYJ-48 步进电机反向不转之震动的问题
- jasper在JSP中导出pdf和xls