使用随机生成的动画数字

时间:2013-07-06 19:12:44

标签: java math random double

我正在尝试重新创建乒乓球,但我遇到了一个我无法弄清楚的错误。

到目前为止,我已经拿到了拨片和拨片。球在大多数情况下显示并移动我想要的方式,但我似乎无法使球初始化在随机方向移动。

以下是设定球方向的代码

        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();
}

使用我当前的代码,球基本上只会朝向三个方向:向上,向左或向左。我已经包含了提供随机数字的打印行,但似乎它可能会将数字四舍五入,因为它只是朝向三个方向。

由于它的方向,似乎它不能用正数运算,当两个随机生成的数字都是正数时,它根本不会移动。

任何帮助将不胜感激, 感谢

1 个答案:

答案 0 :(得分:0)

我认为你的球的xy坐标是int。如果您向其添加double,则会向下舍入结果。这就是为什么你的球只能移动到零或负方向。

使用floatdouble 存储坐标。当你绘制它时,你可以围绕它们。