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

固定创建对象的时间

在四个区域中创建对象,而不是一个。

拥有一组以上 (x,y) 的随机数,并根据每个区域的大小划分每个中创建的对象的百分比。如果您可以在按钮区域之外描绘出四个紧贴在一起的矩形,那么您就有了您的区域。根据您正在创建的对象数量以及您正在寻找的效果,这可能会起作用。

这可能是一个糟糕的主意,但如果您有时会随机地在屏幕的一部分中想要很多对象,因为您正在强制分配。另外,如果您想要屏幕上其他位置的另一个按钮,而不是与当前按钮相邻怎么办?很多地方可能会有点混乱。

此解决方案的优点是创建所有对象需要可预测的时间。每次都应该一样。

创建对象的可变时间

使用 checkPostion() 方法。

使用 checkPostion() 方法并获取一个新的随机数可能更容易。如果您对此很聪明,您应该意识到在很多情况下您只需要“重新滚动”一个坐标而不是两者。

于 2012-02-25T10:38:36.803 回答