我正在制作一个弹跳球计划。我成功地做了一个上下起伏的球。我已设置好让球无法超出界限,所以当它击中屏幕边缘时,它只会反弹回来等等。
现在,问题是,我希望球最终停止移动。例如,我启动程序,球落下并弹回到其起始高度的80%。当它再次下降时,它会因重力加速然后再回升,但可能只达到它原始高度的60%左右,最终它会停止移动。
我该如何制作这样的东西?我用谷歌搜索了几个小时但没有找到任何帮助。所以现在我恳请你帮我一把。此外,如果您决定给我一个方便的提示,请尝试具体而且非常清楚。我没有那么长时间的编程。提前谢谢。
这是我的代码:
编辑:OBSERVE我没有这个类的主要方法,因为我不需要它。我通过一个对象在另一个类中运行它。
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.Timer;
public class Game extends JPanel implements ActionListener{
int DIAMETER = 40;
int yPos;
int yVel = 3;
int GRAVITY =1;
Timer tm = new Timer(5,this);
public void paintComponent(Graphics g){
super.paintComponent(g);
//Setting the characteristics for the ball
g.setColor(Color.red);
g.fillOval(0, yPos, DIAMETER, DIAMETER);
tm.start();
repaint();
}
public void actionPerformed(ActionEvent e) {
//If it decides to go out of the screen, change direction.
if(yPos<0 || yPos>430)yVel=-yVel;
//This basically is the "engine". It moves the ball.
yPos = yPos + yVel;
}
}
答案 0 :(得分:2)
从系统中取出一些能量。
正如撞击地面一样,动能为E = 0.5 * m * v * v
,其中m
为质量,v
为速度。
将E
减少一定数量,比如new_E = 0.8 * E
。然后使用重新排列的动能公式计算新的初始向上速度。
这是非常现实的。当然,你并不需要0.5系数,但我保留了它以保持物理学家的快乐。您也不需要m
。