我将对象放在屏幕(画布)上的随机位置:
public float X=Rnd.nextInt((MainGamePanel.width - 60) - 20) + 20;
public float Y=Rnd.nextInt((MainGamePanel.height - 30) - 30) + 30;
这很好用。现在;如果我想避免将对象放在(40,50) - (60,80)上怎么办...例如,因为我有一个按钮,我不希望按钮被可见对象覆盖。
当然,我可以实现一个“检查位置”例程,如果将对象位置放在按钮区域内的某个位置,则重新随机化。但这是最好的(最干净,最好,最快)的解决方案吗?谢谢你的想法!
答案 0 :(得分:1)
创建对象的固定时间
在四个区域中创建对象,而不是一个。
具有多个随机数集(x,y),并根据每个区域的大小分割每个中创建对象的百分比。如果你可以在按钮区域外面画出四个紧贴在一起的矩形,那么就可以看到你的区域了。根据您正在创建的对象的数量以及您要查找的效果,这可能有效。
这可能是一个可怕的想法,但如果你有时随机地想要在屏幕的一个部分中有很多对象,那么你就是在强迫分发。如果您想在屏幕上的其他位置使用另一个按钮,而不是与当前按钮相邻,该怎么办?有很多区域可能会有点混乱。
此解决方案的优势在于创建所有对象需要可预测的时间。它应该每次都一样。
创建对象的可变时间
使用checkPostion()方法。
使用checkPostion()方法并获取一个新的随机数可能更容易。如果你对它很聪明,你应该意识到在很多情况下你只需要“重新滚动”一个坐标而不是两个坐标。