黄金矿工(Java)

目录

1、十五个功能点

2、基本功能的实现

2、1 窗体绘制

2、2 图片载入和绘制

2、3 红线的绘制

2、4 创建金块/石块

2、5 双缓存技术

2、6 抓取判定

3、界面展示


1、十五个功能点

1、窗体绘制

2、钩爪往返旋转

3、物体批量绘制

4、双缓存解决闪动问题

5、点和矩形碰撞检测

6、多种类物体随机生成

7、物体堆叠检测

8、多种类抓取速度判定

9、积分设置

10、关卡设置

11、重新开始

12、单关卡倒计时

13、金块的快速拉取

14、石块爆破

15、商店购物

2、基本功能的实现

2、1 窗体绘制

创建一个Java项目,命名为The Gold Miner ,在项目下创建GameWin类。让GameWin类继承 JFrame类。这样才具有创建窗口,监听鼠标键盘事件的功能。

JFrame窗体是一个容器,它扩展了java.awt.Frame类,是Swing程序中各个组件的载体。在开发应用程序时,可以通过继承javax.swing.JFrame类来创建一个窗体对象,这个窗体继承了JFrame类自带的控制窗体的按钮,如“最大化”“最小化”“关闭”等,可以在窗体中添加组件以及为组件设置事件。

设置窗口信息:

●设置窗体可见,setVisible(true);

●设置窗口大小,setSize(500,500);

●设置窗口位置居中,setLocationRelativeTo(null);

●设置窗口标题:setTitle("黄金矿工");

●关闭窗口的方法:setDefaultCloseOperation(EXIT_ON_CLOSE); 

        //点击关闭按钮时,隐藏窗口

2、2 图片载入和绘制

用Image方法将图片载入程序当中。

例:Image bg =Toolkit.getDefaultToolkit().getImage("此处放置图片的路径(imgs/bg.jpg)");

调用 drawImage 绘制图片:

g.drawImage(bg,0,0,null);        //起始坐标设置为0,0。

2、3 红线的绘制

drawLine() 是划线的方法。需要传入四个参数即起点坐标和终点坐标。

setColor(Color.red)        //将绳子设置为红色。

红线摇摆情况:

●红线在水平面下做往返运动,可以发现,起点坐标是确定的,线段长度是确定的,终点坐标随角度的变化而变化。那么我们可以根据三角函数,求得其终点坐标,如上图所示。

 

 ●角度设置为0-π。操作n实现角度的变化。

红绳有摇摆、抓取、收回三种状态。设置一个鼠标事件(点击事件),通过鼠标事件来改变参数,继而改变红绳的状态。使用一个switch语句,如果状态时0则左右摇摆,如果状态为1(右键),则不停延长(增加线的长度)。如果是状态2,则收回(即线长变短)。

2、4 创建金块/石块

金块和石块具有很多相同的属性,如坐标宽高等,所以创建一个Object 父类,在其中定义他们的公共属性。再创建金块类或石块类,继承Object类,后写一个无参构造,并在其中定义初始值。

2、5 双缓存技术

窗体中的元素都是通过 paint 的方法来进行绘制的。先绘制背景,再绘制线,然后绘制金块。背景 线 金块一直重复着绘制,就会出现闪动问题。如何解决?可以在窗体之外在新建一个画布,将背景,线,金块依次绘制在画布中,将其组合起来后一并传入窗体当中。

2、6 抓取判定

金块和石块在程序中被看为一个矩形,红线末尾是一个点。是否抓住,实质上就是检测点是否在矩形当中,即判断endx和endy(红线的末尾坐标在不在矩形内)

即判断endx是否大于金块的x 并且小于 x+金块的宽度,并且 endy是否大于y,小于y+金块的高度。若均符合则抓取成功。抓取成功后 红绳返回,金块移除(移到屏幕外即可)。

3、界面展示

代码在本文章的最上面,可以直接下载。

学习自:B站尚学堂