1

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

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

这是设置球方向的代码

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

使用我当前的代码,球基本上只会朝三个方向移动:上、左上或左。我已经包含了给出随机数的打印行,但似乎它可能正在对数字进行四舍五入,因为它只在三个方向上进行。

由于它前进的方向,它似乎不适用于正数,而且,当两个随机生成的数字都是正数时,它根本不会移动。

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

4

1 回答 1

0

我想你的球xy坐标是int。如果添加 a double,它会将结果四舍五入。这就是为什么你的球只向零或负方向移动的原因。

使用floatdouble存储坐标。当你画它的时候,你可以把它们弄圆。

于 2013-07-06T19:20:41.780 回答