随机放置对象时避免画布中的特定范围

时间:2012-02-25 10:24:44

标签: android android-canvas ondraw

我将对象放在屏幕(画布)上的随机位置:

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

这很好用。现在;如果我想避免将对象放在(40,50) - (60,80)上怎么办...例如,因为我有一个按钮,我不希望按钮被可见对象覆盖。

当然,我可以实现一个“检查位置”例程,如果将对象位置放在按钮区域内的某个位置,则重新随机化。但这是最好的(最干净,最好,最快)的解决方案吗?谢谢你的想法!

1 个答案:

答案 0 :(得分:1)

创建对象的固定时间

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

具有多个随机数集(x,y),并根据每个区域的大小分割每个中创建对象的百分比。如果你可以在按钮区域外面画出四个紧贴在一起的矩形,那么就可以看到你的区域了。根据您正在创建的对象的数量以及您要查找的效果,这可能有效。

这可能是一个可怕的想法,但如果你有时随机地想要在屏幕的一个部分中有很多对象,那么你就是在强迫分发。如果您想在屏幕上的其他位置使用另一个按钮,而不是与当前按钮相邻,该怎么办?有很多区域可能会有点混乱。

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

创建对象的可变时间

使用checkPostion()方法。

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