我正在尝试重新创建乒乓球,但我遇到了一个我无法弄清楚的错误。
到目前为止,我已经拿到了拨片和拨片。球在大多数情况下显示并移动我想要的方式,但我似乎无法使球初始化在随机方向移动。
以下是设定球方向的代码
if(inGame == true)
{
double start = -1;
double end = 1;
Random xRand = new Random();
double xResult = start + (end - start) * xRand.nextDouble();
Random yRand = new Random();
double yResult = start + (end - start) * yRand.nextDouble();
System.out.println("xRand: " + xResult);
System.out.println("yRand: " + yResult);
ball.setMove(xResult, yResult);
}
这是我的setMove方法
public void setMove(double x, double y){
dx = x;
dy = y;
}
以下是移动球的实际方法
public void move(){
x += dx;
y += dy;
}
在此方法中连续调用
public void actionPerformed(ActionEvent e) {
repaint();
paddle.move();
ball.move();
}
使用我当前的代码,球基本上只会朝向三个方向:向上,向左或向左。我已经包含了提供随机数字的打印行,但似乎它可能会将数字四舍五入,因为它只是朝向三个方向。
由于它的方向,似乎它不能用正数运算,当两个随机生成的数字都是正数时,它根本不会移动。
任何帮助将不胜感激, 感谢
答案 0 :(得分:0)
我认为你的球的x
和y
坐标是int
。如果您向其添加double
,则会向下舍入结果。这就是为什么你的球只能移动到零或负方向。
使用float
或double
存储坐标。当你绘制它时,你可以围绕它们。