你知道黄金矿工游戏涉及到了数学知识吗?
Posted 周杰伦本人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你知道黄金矿工游戏涉及到了数学知识吗?相关的知识,希望对你有一定的参考价值。
你知道黄金矿工游戏涉及到了数学知识吗?
黄金矿工的游戏想必大家都玩过,今天我们用java实现一个黄金矿工游戏的功能
背景
首先是背景的绘制,游戏的背景大多都图片的堆积,这里我们同样通过加载图片来实现游戏背景
我们重写Window类的paint()方法进行绘制窗口:
Image offScreenImage = this.createImage(768,1000);
Graphics gImage = offScreenImage.getGraphics();
bg.paintSelf(gImage);
这里要说一下,bg是背景类的实例,背景类就是定义这个游戏中的各种关卡的图片元素,人物图片等的。
钩子
背景设置好之后,接下来我们设计钩子的功能
首先我们要画一个线,这也就是钩子的轨迹,画线很简单,调用Graphics的drawLine()方法就可以,游戏的关键是钩子的摇摆,这是角度问题,也是数学问题,我们需要计算起点坐标和终点坐标,
endx = (int) (x +length*Math.cos(n* Math.PI));
endy = (int) (y +length*Math.sin(n*Math.PI));
g.setColor(Color.red);
g.drawLine(x-1,y,endx-1,endy);
我们通过不断改变n的值从而实现钩子的角度的变化
关于线的收回,也就是变短不停的绘制,这里是通过减少length的值来实现收回功能
黄金
黄金可以设置成一个类,它有x y 等坐标属性,对于黄金的加载,同样也是加载图片,对于图片的加载我们可以使用,然后通过Graphics绘制图片
Toolkit.getDefaultToolkit().getImage("gold.gif");
g.drawImage(img,x,y,null);
那么判断钩子是否勾到了黄金呢?遍历所有的黄精和石块,我们还是看直线的终点位置是否在这些物体范围内就可以了
for(Object obj:this.frame.objectList)
if(endx>obj.x && endx<obj.x+obj.width
&& endy>obj.y && endy< obj.y+obj.height)
state=3;
obj.flag=true;
这一段代码的逻辑也就是判断是否在矩形中,当在矩形内的时候表名抓取成功,,其中obj.flag是用来表示物体是否抓取成功的属性
这时候需要黄金随线的点移动:
obj.x=endx-obj.getWidth()/2;
obj.y=endy;
if(length<=MIN_length)
obj.x=-150;
obj.y=-150;
obj.flag=false;
通过代码我们可以看到,物体的坐标是跟着线的终点值改变的,当线的长度缩短到零的时候,物体坐标位置设置到画面之外,从而实现黄金消失的效果,这时候可以定义个score属性来记录分数,这样一个黄金矿工的关键功能就实现了。
总结
这篇文章对黄金矿工的简易功能做了开发,主要涉及线的形成,黄金的抓取的过程做了开发,这里涉及到的角度的变化,涉及到了三角函数的数学知识
以上是关于你知道黄金矿工游戏涉及到了数学知识吗?的主要内容,如果未能解决你的问题,请参考以下文章
scratch高阶案例教学scratch黄金矿工 scratch创意编程 少儿编程 手把手教小朋友们从零制作黄金矿工游戏