最后
由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。
本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。
步骤四:为Ground类添加属性
================
Ground类中,各个属性表示的含义如图7所示:
在Ground类中添加的代码如图8所示:
其中,image属性为地面的贴图。
步骤五:为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所示。
步骤十七:实现鼠标监听事件
=============
要实现鼠标的按下事件,步骤如下:
-
使用“匿名内部类”声明事件
-
处理方法。即在BirdGame类的action方法声明事件的处理方法;
2、首先,在Bird类中添加flappy以实现鸟的飞翔。然后,在处理方法中,调用Bird类的flappy方法。
3、注册事件监听。即在BirdGame类的action方法中,注册监听事件。
在BirdGame类中添加的代码如图37所示。
在Bird类添加的代码如图38所示:
从图38可以看出,实现flappy方法,只需要将速度设置为初始速度v0即可。
步骤十八:实现计分
=========
要实现计分,需要进行以下操作:
1、在BirdGame类中增加属性score,用于计分,score初始化为0。
写在最后
学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!
最后再分享的一些BATJ等大厂20、21年的面试题,把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。
Mybatis面试专题
MySQL面试专题
并发编程面试专题
QL面试专题
[外链图片转存中…(img-s7qg7ckA-1715307254135)]
并发编程面试专题