0

私はJavaが初めてです。矢印キーでボールを制御できるようにしようとしています。別のボールと衝突すると、コンソールに「負けました」などの行が表示されます。

移動は完了しましたが、2 つのボールを衝突させる方法に少し苦労しています。これまでのところ、これを試しました(ボールの周りに長方形を置いたと思いますが、実際にはわかりません!):

public void collision() {
    Rectangle rectP = new Rectangle(player.x, player.y, player.WIDTH, player.HEIGHT);       
    Rectangle rectE = new Rectangle(Enemy.ex, Enemy.ey, Enemy.WIDTH, Enemy.HEIGHT);

    if(rectP.intersects(rectE))
    {

    System.out.println("game over");
    }
}

誰かが私を助けて、私が間違ったことを説明してくれませんか。

ps。私にコードを教えないでください、私は試して学びたいです!!!.

ありがとう。

public void actionPerformed(ActionEvent e) {
    repaint();
    x += velx;
    y += vely;
}

public void up() {
    vely = -1.5;
    velx = 0;
}

public void down() {
    vely = 1.5;
    velx = 0;
}

public void left() {
    vely = 0;
    velx = -1.5;
}

public void right() {
    vely = 0;
    velx = 1.5;
}

public void keyPressed(KeyEvent e) {
    int code = e.getKeyCode();
    if (code == KeyEvent.VK_UP) {
        up();
    }
    if (code == KeyEvent.VK_DOWN) {
        down();
    }
    if (code == KeyEvent.VK_LEFT) {
        left();
    }
    if (code == KeyEvent.VK_RIGHT) {
        right();
    }
}
4

2 に答える 2

0

2 つのボールの中心の座標 X と Y があり、ボールの半径がわかっている場合、これは簡単な作業です。

ボールの中心間の距離を計算し、それをボールの半径の合計と比較するだけです。

式をスキップするように頼んだので、それだけです:)

PSコードで奇妙に見えるのは、player小文字ですが大文字Enemyになっていることです..それはクラスですか、それともオブジェクトですか?

于 2013-04-17T22:25:57.547 に答える