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

現在のコードでは、ボールは基本的に、上、左上、左の 3 方向にしか進みません。乱数を与える印刷行を含めましたが、3方向にしか進んでいないため、数値を四捨五入しているようです。

進行方向のせいで、正の数では機能しないように見えます。また、ランダムに生成された両方の数が正の場合、まったく動きません。

助けていただければ幸いです、ありがとう

4

1 に答える 1

0

あなたのボールxy座標はだと思いますint。これに a を追加するdoubleと、結果は切り捨てられます。そのため、ボールはゼロまたは負の方向にのみ移動します。

floatまたはdoubleを使用して座標を保存します。描くと丸められます。

于 2013-07-06T19:20:41.780 に答える