各位读者老爷大家好,由于最近一直比较忙没什么空,导致好久没有更新文章了,明天有一天假期,就利用今晚时间和大家聊聊最近刚写的一个小游戏,由于自己的时间比较少,所以没有在细节上做过多的处理,程序还有很多不足的地方,也欢迎大家多多指出或者提出自己的观点,游戏代码仍然会在文章结尾处下载,废话不多说,进入正题。

Flappy Bird当年红极一时的小游戏,想必大家应该都玩过,先上一张效果图

效果动图

我写游戏仍然按照自己的一贯风格,用最简单的代码或者逻辑实现游戏的主要功能,因为我的文章主要面向广大新手,加上自己也是一个初学者,主要目的是为了和大家交流经验。

接下来说一下游戏的几个主要功能是如何实现的:

第一步:游戏中的各种动画的实现 用到的知识:CADisplayLink定时器,以及控件的frame变化

这里不得不说说我时如何在在storyboard中搭建我的游戏界面的

storyboard中搭建结构

我用到的游戏素材分别是小鸟,上方管子,下方管子,地面背景,城市草地背景

后面的天空背景是我自己设置的view的背景色

游戏中看着是小鸟在往右飞,其实我设置的是鸟只是在上下移动,而背景图片在不停往左移动,那么我是如何实现的背景图片在移动呢。

看我的搭建结构,大家可以看到我在view中又放了两个UIView控件,分别是view1和view2,view1的尺寸和屏幕一样,view2则在view1的右边紧紧挨着,也就是说在屏幕外面暂时看不到,然后两个都设置了背景颜色,以及地面背景图,城市草地背景图,我能够让游戏中的背景一直不停移动原理就是view1和view2以相同速度左移,当view1完全移出屏幕的时候,让它的frame变到view2的正右方,当view2移出屏幕的时候就让其frame变到view1的正右方,所以这样就能用两个view实现背景的无缝移动。

鸟和管道我都没有放到view1和view2中,而是都放到了原有的view中,为的是不让鸟和view1,view2一起移动,管子的话倒是无所谓,个人喜好吧。

同理,管子也要以和view1,view2一样的速度左移,从而实现一起移动的视觉效果。

注意CADisplayLink的方法大概是每秒调用60次,所以方法中每次控件移动的距离设的尽量小一点,这样不会导致速度移动过快。

说完了背景以及管道的移动再说下小鸟的,小鸟是要一直让它的frame的y值一直增加就能实现下降效果,点击屏幕鸟的位置向上移动的效果在touchesBegan方法里让它y值每次增加一些就可以实现。

还有就是鸟扇动翅膀的效果,就是两个图片不停的切换而已,动画效果差不多就这么多了

第二步:死亡条件判定

第一种情况是鸟掉道地上,这种比较简单,只要鸟的y值加上本身的height大于或等于地面背景的y值就可以判断

第二种死亡则是鸟碰到管子上,这里稍微复杂一点点,就是一个简单的碰撞检测

以上方的管子为例,简单的说也就是鸟的区域只要和管子的区域有一点重合就算失败,不理解的话可以看看这一段代码

if (self.redButton.x + BirdWH >= self.greenView.x && self.redButton.x <= CGRectGetMaxX(self.greenView.frame) && self.redButton.y <= CGRectGetMaxY(self.greenView.frame)) {

[self gameOver];

}

这个管子能明白的话,下方的管子也肯定能理解,这就是两种死亡条件

第三步: 如果让管子不停显示,并且长度不一

管子不停显示和view1,view2不停显示道理一样,就是一走出屏幕左边就让它的frame来到屏幕右边,至于长度则是每次来到屏幕右边的时候让它的height在一定范围内取个随机值,这样看起来就像好多不一样的管子了,为了追求难道,你们也可以增加管子的数量以及合理的设置随机长度范围,这里要注意,上方的管子只需要改变height就可以,但下方的height变化后它就不是长在地上的样子了,所以还要注意再根据随机长度修改y值,让管子的根一直扎在地上。

第四步: 分数显示

这里我遇到了一个bug,我一开始在view上放了个label控件准备显示分数,原理是每一个管子到达屏幕左边的时候让分数加1,然后每次分数变了的时候游戏就会刷新到开始的样子,我请教了一下后得知这里涉及到多线程那块的运行循环的知识,等我这里研究研究再来更新,bug没解决,我试了试手写代码产生label,这次没有出现错误,就先用手写的创建了。

游戏大体上基本就这样了,这和正版游戏的方法肯定有非常多不一样的地方,我只是利用有限的知识简单的实现了游戏的功能而已,大家有什么好的建议和想法,欢迎大家积极留言讨论。

java fly bird小游戏_Flappy Bird 小游戏相关推荐

  1. java fly bird小游戏_java swing实现的小游戏flybird源码附带视频配置修改教程

    大家好,今天给大家演示一下由Java swing实现的一款小游戏flybird,该游戏操作比较简单,点击鼠标确保小鸟不要触碰到柱子即可,该游戏可运行在Java环境下,jdk版本不限,下面我们来看看如何 ...

  2. c语言像素鸟游戏,掌控板制作Flappy bird(像素鸟)小游戏

    掌控板制作Flappy bird小游戏 大学时期火爆的手机游戏,记得那时候我在做unity开发,还用C#仿照写过这个游戏,用"空格键"操作. 先说一下这游戏的操作:游戏开始,点击屏 ...

  3. C#小项目飞翔的小鸟游戏详细教程(Flying bird),基于Winform框架

    C#小项目飞翔的小鸟游戏详细教程(Flying bird),基于Winform框架 实现效果: 1.空格,鼠标左键控制小鸟跳 2.管道随机大小 3.小鸟与管道碰撞,小鸟碰到地面 4.小鸟煽动翅膀动画 ...

  4. 猜物品游戏java编程_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  5. java 后台跳出提示_小猿圈Java初学者练习小案例:猜数字游戏

    对于Java初学者,如果没有好的引导,可能会觉得自己学什么都不好,学什么都不会,这个时候就要给他们一下小的案例,让他们去实践一下,让他们知道自己学的东西是可以用到的,小猿圈java讲师为你准备了Jav ...

  6. 【源码+教程】Java课设项目_12款最热最新Java游戏项目_Java游戏开发_Java小游戏_飞翔的小鸟_王者荣耀_超级玛丽_推箱子_黄金矿工_贪吃蛇

    马上就要期末了,同学们课设做的如何了呢?本篇为大家带来了12款热门Java小游戏项目的源码和教程,助力大家顺利迎接暑假![源码+教程]Java课设项目_12款最热最新Java游戏项目_Java游戏开发 ...

  7. 基于java设计小游戏目的_java小游戏设计

    华北科技学院计算机学院综合性实验 实 验 报 告 课程名称 JA VA A 程序设计 实验学期 20 14 至 20 15 学年 第 1 学期 学生所在院部 计算机学院 年级 专业班级 学生姓名 学号 ...

  8. Java实现简易联网坦克对战小游戏(内涵源码)//Java+Java游戏+拓展学习+资源分享

    介绍 通过本项目能够更直观地理解应用层和运输层网络协议, 以及继承封装多态的运用. 网络部分是本文叙述的重点, 你将看到如何使用Java建立TCP和UDP连接并交换报文, 你还将看到如何自己定义一个简 ...

  9. java 拼图游戏_Java小项目之:拼图游戏!

    Java小项目之:拼图游戏! 今天教大家用java做出一个拼图游戏,很适合java初学者练手. 所用素材: 部分代码: package picture_mosical; import java.awt ...

  10. java编写游戏_java编写小游戏-大球吃小球

    游戏界面: 点击火箭开始游戏 点击Exit退出游戏 左上角显示当前成绩和历史最高分 退出自动保存最高成绩 代码获取 扫码关注微信公众号[程序猿声] 在后台回复[EBG]不包括[]即可获取. 玩法: 玩 ...

最新文章

  1. 一年融4轮,虎赞科技完成红杉领投3000万美元B轮融资
  2. 网站SEO优化、IIS日志分析工具 IISLogViewer V2.0 发布
  3. QUETY使用标准数据源的报表传输到新系统没有数据取出
  4. 对 带头结点的单链表 的操作
  5. 【linux】设置镜像源
  6. 【综述】基于Transformer的视频语言预训练
  7. leetcode python3 简单题121. Best Time to Buy and Sell Stock
  8. 线程同步,通信与虚方法
  9. HDU 1754 I Hate It 基础线段树
  10. html5 本地mysql_html5本地数据库(一)
  11. 管理新语:员工随口回答,并不是有意忽悠,而是都这样
  12. SMART PLC PID仿真 (SMART PID仿真库使用说明)
  13. 在word中怎么实现奇数页页眉用本章标题,偶数页用论文标题?
  14. python_使用marshal模块序列化
  15. 电脑配置低android模拟器,安卓模拟器低配置版哪个好 电脑内存再小也不怕
  16. PLC控制电动机的顺序启动逆序停止
  17. 站长技术导航二开美化网站源码 网站提交自动秒收录
  18. Android硬件开发------计步传感器
  19. kettle java交互_java程序中给Kettle传参数,其实很简单
  20. netdisk 多维云盘开发工具包

热门文章

  1. excel超链接报本机限制问题
  2. 微信小程序地图图标controltap
  3. 10、返回当前审批流程图、后续审批按钮
  4. ISCC2021-部分题目再现
  5. python龙旋风图形代码_python-如何在数据库中使龙卷风请求成为原...
  6. MFS分布式文件系统
  7. DNSlog注入思路
  8. 导航栏菜单实现鼠标移入移出中英文切换的两种方法(css3和jQuery)
  9. 推荐电影 迪士尼经典动画片大全 1937-2008
  10. javascript数组