Java 飞翔的小鸟小游戏开发 完全源码 + 论文文档

步骤五:为Column类添加属性

================

Column类中,各个属性表示的含义如图9所示。

在Column类中添加的代码如图10所示:

其中,image属性表示柱子贴图。

步骤六:为Bird类添加属性

==============

代码如图11所示:

image属性表示Bird类的贴图,x,y表示鸟的中心位置,width和height表示鸟图片的宽度和高度。在本实训项目中,小鸟的大小用一个正方形区域来表示,size即表示该正方形的边长,用于后续的碰撞检测。

步骤七:为BirdGame类添加构造方法,初始化属性

==========================

通过图12大家可以看出实例化Column类的时候,出现了编译错误,这是因为还没有为Column类编写一个带参数的构造器。

步骤八:为Column类添加构造方法,初始化属性

========================

下面介绍一下x、y坐标的计算方式,第一个柱子的x坐标为x= 432+118=550,第二根主子的x坐标为x=550+245,因此,柱子的x轴坐标可以总结为x = 550+245*(n-1),其中n表示第几根柱子。

可以看出,柱子y的坐标范围在132至350之间随机分布,使用Random类的nextInt方法生成[0-218)之间的随机数,然后再加上132,这样就能得到132至350之间的随机数了。

步骤十:为Bird类添加构造方法,初始化属性

======================

步骤九:为Ground类添加构造方法,初始化属性

步骤十一:编写main方法

=============

在main方法中,设置窗口的大小、居中、点击窗口的右上角“X”关闭窗口以及设置窗口可见,代码如图20所示。

步骤十二:绘制界面

=========

在BirdGame类中重写paint方法,绘制界面。首先绘制地面,代码如图21所示。

使用Graphics的drawImage方法,绘制背景界面的时候,绘制的起点坐标是(0,0)。然后,绘制2个柱子,代码如图22所示。

绘制两个柱子的时候,绘制的起点坐标与Column类的属性x,y的值不同,需要做一些更改,具体见图23。

步骤十三:运行

=======

运行BirdFrame类,显示的界面效果如图26所示。

步骤十四:实现地面的运动

============

步骤十五:实现柱子的移动

============

步骤十六:实现鸟的运动

===========

经过时间t的位移s的计算公式:

s = v0 * t + g * t * t / 2;

==============================

从图33可以看出,经过时间t后小鸟的纵坐标位置y1的计算公式为:

y1 = y - s;

===========

经过t时间后,小鸟的运行速度v为:

v = v0 - g * t ;

=================

此时,Bird类中添加的代码如下所示:

然后,实现鸟的动画处理。使用数组,存储要显示的图片,共计8张,鸟每运动一次换一张图片,以达到鸟的动画效果。此时,Bird类中添加的代码如下:

从上述代码中可以看出,fly方法实现了鸟的飞翔。一个数对8取余,能够得到0到7之间的数字,正好是images数组中的下标,index/12的目的是 使鸟的挥动翅膀次数变慢,即切换照片的频率变慢。

接着,在BirdGame类的action方法中,调用Bird类的fly方法和step方法。运行后,会发现鸟可以动起来了。代码如图34所示。

最后,计算倾角。假设水平移动的位移固定为8,那么倾角 = 反正切s/8,在Bird类中添加的代码如下所示:

上述代码中,调用Java API提供的反正切方法atam,计算倾角。

接着,在BirdGame类的paint中,为达到鸟的飞翔效果,使用Java API,使小鸟旋转,代码如图36所示。

步骤十七:实现鼠标监听事件

=============

要实现鼠标的按下事件,步骤如下:

  1. 使用“匿名内部类”声明事件

  2. 处理方法。即在BirdGame类的action方法声明事件的处理方法;

2、首先,在Bird类中添加flappy以实现鸟的飞翔。然后,在处理方法中,调用Bird类的flappy方法。

3、注册事件监听。即在BirdGame类的action方法中,注册监听事件。

在BirdGame类中添加的代码如图37所示。

在Bird类添加的代码如图38所示:

从图38可以看出,实现flappy方法,只需要将速度设置为初始速度v0即可。

步骤十八:实现计分

=========

要实现计分,需要进行以下操作:

1、在BirdGame类中增加属性score,用于计分,score初始化为0。

2、在BirdGame类的action方法的主循环中,添加逻辑判断。当柱子的x坐标与鸟的x坐标重合时,则加1分。

3、在BirdGame类的paint方法中将分数画出来。

在BirdGame类中增加的代码如下图所示:

步骤十九:实现鸟的碰撞检测

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

最后

本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以送给我的读者朋友们

目录:

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

Java面试核心知识点

已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了

全靠这套面试题,才让我有惊无险美团二面拿offer  (面经解析)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

片转存中…(img-gYWrkCs1-1712790105388)]

Java面试核心知识点

已经有读者朋友靠着这一份Java面试知识点指导拿到不错的offer了

[外链图片转存中…(img-K7XpHha9-1712790105388)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-hmLnwXd6-1712790105388)]

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值