次の方法を使用して、以前に使用されたことのないポイント (座標) を見つけようとしていますが、以前に使用したアイテムと座標の境界内にありません。
それが機能する方法は、「ベース」(RTS トップダウン ゲーム) をレンダリングしていて、x と y の 2 つの確率変数の場所を作成していることです。これらをベース テクスチャと共に次のメソッドに渡します。このメソッドは、以前にレンダリングされた各ベースの四角形である四角形のリストをループ処理します。ポイントがいずれかの長方形内にある場合は、別の座標セットを使用してメソッドが再度呼び出されます。長方形内にないセットが見つかるまで、これを行います。次に、これらの座標で新しい四角形をリストに追加し、ゲームが新しいベースをレンダリングできるようにそれらを返します。
ただし、ベースはまだ重複しています。
メソッドは次のとおりです。
private Point getCoords(int x, int y, Texture t){
for (int i=bases.size()-1; i> -1; i--) {
if (bases.get(i).contains(new Point(x,y))){
x = new Random().nextInt(map.getWidth() * map.getTileWidth());
y = new Random().nextInt(map.getHeight() * map.getTileHeight());
getCoords(x, y, t);
}
}
bases.add(new Rectangle(x,y,t.getImage().getWidth(), t.getImage().getHeight()));
return new Point(x, y);
}
そして、これが呼び出されている場所です:
switch(ran){
default:
int x = new Random().nextInt(map.getWidth() * map.getTileWidth());
int y = new Random().nextInt(map.getHeight() * map.getTileHeight());
Point p = getCoords(x, y, temp);
map.generateBase("air", p.x, p.y);
break;
}
ここで何が間違っているのでしょうか?
ありがとう