Fork me on GitHub

fly bird

搞点好玩的,这个简单的项目实现主要就是画面数值的精确计算。fly bird

绘制分析

画面总的分为三部分,运行画面,开始画面和结束画面。设置状态转换,点击开始画面进入运行状态,点击结束画面回到开始状态(重新加载地图)。运行状态的设计是游戏核心。分析游戏的运行是通过鼠标点击来改变小鸟的运动,因此要对界面添加一个监听器,监听鼠标的变化。

地面类和柱子类都只需要计算好初始化位置和平移位置。

主要的逻辑在小鸟类实现。小鸟的飞行动作由加载的一系列图片循环加载完成。每一次点击都是完成一次抛物运动,因此涉及到了初速度,角度,重力加速度(伪)属性,以及时间属性。小鸟的位移只有垂直位移,移动的效果是通过地面和柱子的移动完成的。视觉上小鸟在做抛物线是由小鸟的旋转角度变化实现的。

1
alpha = Math.atan(s / 8);

最后就是要判定游戏得分条件和结束条件。

Java Swing

游戏用到了Java SWing,Swing是一个用于Java GUI的工具包。

JFrame – java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化、最小化、关闭。
JPanel – Java图形用户界面(GUI)工具包swing中的面板容器类,包含在javax.swing 包中,可以进行嵌套,功能是对窗体中具有相同逻辑功能的组件进行组合,是一种轻量级容器,可以加入到JFrame窗体中。

在main程序中new JFrame(),添加了BirdGame(),其中BirdGame()继承自JPanel。

监听器

BufferedImage

BufferedImage是Image的一个子类,主要作用是将一幅图片加载到内存中。

1
BufferedImage image = ImageIO.read(new FileInputStream(imgPath));

显示BufferedImage用Graphics: Graphics.drawImage()

Graphics提供基本绘图和显示格式化文字的方法,Graphics2D提供了更强大的绘图能力。

repaint: 重绘此组件。如果组件是轻量组件,则此方法会尽快调用此组件的 paint 方法。否则此方法会尽快调用此组件的 update 方法。



本文标题:fly bird

文章作者:tsuki

发布时间:2022.03.23 - 21:55

最后更新:2022.03.24 - 09:52

原始链接:https://tsuki419.github.io/flappy-bird.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------THE END-------------
0%