0

Java で小さなバルーン ゲームを作成し、新しい「バルーン」オブジェクトを作成するときに画面上で重ならないようにコードを記述しようとしています。

私がこれまでに持っているコードは次のとおりです。

 public void newGame(){
    UI.clearGraphics();
    this.currentScore = 0;
    this.totalPopped = 0;
    for (int i = 0; i < this.balloons.length-1; i++) {
        this.balloons[i] = new Balloon(50 + Math.random()*400, 50 + Math.random()*400);
        for (int j = i + 1; j < this.balloons.length; j++) {
            if (this.balloons[i] !=null && this.balloons[j] != null && this.balloons[i].isTouching(balloons[j])) {
                this.balloons[j] = new Balloon(50 + Math.random()*400, 50+ Math.random()*400);
            }
        }
        this.balloons[i].draw();
    }
    UI.printMessage("New game: click on a balloon.  High score = "+this.highScore);
}

draw メソッドと isTouching メソッドを使用します。

    public void draw(){
    UI.setColor(color);
    UI.fillOval(centerX-radius, centerY-radius, radius*2, radius*2);
    if (!this.popped){
        UI.setColor(Color.black);
        UI.drawOval(centerX-radius, centerY-radius, radius*2, radius*2);
    }
}

    /** Returns true if this Balloon is touching the other balloon, and false otherwise
 *  Returns false if either balloon is popped. */
public boolean isTouching(Balloon other){
    if (this.popped || other.popped) return false;
    double dx = other.centerX - this.centerX;
    double dy = other.centerY - this.centerY;
    double dist = other.radius + this.radius;
    return (Math.hypot(dx,dy) < dist);
}

バルーンが作成されたときに、バルーンが互いに触れないようにするにはどうすればよいですか?

4

1 に答える 1

1

現在、2 つのループがあります。最初のループでは、バルーンが作成されます。2 番目のループでは、すべてのバルーンが他のすべてのループに対してテストされます。最初のループでこのテストを行います。新しいバルーンを作成した後、既存のすべてのバルーンに対してテストします。

于 2013-05-21T09:40:07.910 に答える