1

画面上のランダムな位置にオブジェクトを配置します(キャンバス):

 public float X=Rnd.nextInt((MainGamePanel.width - 60) - 20) + 20;
 public float Y=Rnd.nextInt((MainGamePanel.height - 30) - 30) + 30;

これは正常に機能します。今; (40,50)-(60,80)の上にオブジェクトを配置したくない場合はどうなりますか?たとえば、そこにボタンがあるため、ボタンが表示されているオブジェクトで覆われないようにします。

もちろん、オブジェクトの位置がボタン領域内のどこかに配置されている場合に再ランダム化する「チェック位置」ルーチンを実装することもできます。しかし、これは最良の(最もクリーンで、最も近い、最も速い)ソリューションですか?あなたの考えをありがとう!

4

1 に答える 1

1

オブジェクトを作成するための固定時間

1つではなく、4つの領域にオブジェクトを作成します。

ランダム化された数値の複数のセット(x、y)を用意し、各領域のサイズに応じて、それぞれで作成されたオブジェクトのパーセンテージを分割します。ボタン領域の外側にぴったりと収まる4つの長方形を想像できる場合は、領域があります。作成しているオブジェクトの数と、探している効果によっては、これが機能する可能性があります。

これはひどい考えかもしれませんが、分散を強制しているときに、画面の一部にたくさんのオブジェクトがランダムに必要になる場合があります。また、現在のボタンに隣接していない、画面上の別の場所に別のボタンが必要な場合はどうなりますか?多くの領域で少し厄介になる可能性があります。

このソリューションの利点は、すべてのオブジェクトを作成するのに予測可能な時間がかかることです。毎回同じである必要があります。

オブジェクトを作成するための可変時間

checkPostion()メソッドを使用します。

checkPostion()メソッドを使用して、新しい乱数を取得する方がおそらく簡単です。あなたがそれについて賢いなら、多くの場合、あなたは両方ではなく一方の座標を「再ロール」するだけでよいことを理解する必要があります。

于 2012-02-25T10:38:36.803 に答える