Избегание определенных диапазонов на холсте при случайном размещении объектов - PullRequest
1 голос
/ 25 февраля 2012

Я размещаю объекты на случайных позициях на экране (холст):

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

Это прекрасно работает.Сейчас;Что, если я хочу избежать размещения объектов над (40,50) - (60,80) .. например, поскольку у меня есть кнопка, я не хочу, чтобы кнопка была покрыта видимыми объектами.1005 * Конечно, я мог бы реализовать подпрограмму "контрольного положения", которая повторно рандомизирует, если положение объекта находится где-то внутри области кнопки.Но это лучшее (самое чистое, самое быстрое) решение?Спасибо за ваши мысли!

1 Ответ

1 голос
/ 25 февраля 2012

Фиксированный период времени для создания объектов

Создание объектов в четырех областях, а не в одной.

Имеет более одного набора (x, y) израндомизированные числа и разделить процент созданных объектов в каждом в соответствии с размером каждой области.Если вы можете изобразить четыре прямоугольника, которые плотно прилегают друг к другу за пределами области кнопок, то у вас есть свои области.В зависимости от того, сколько объектов вы создаете и какой эффект вы ищете, это может сработать.

Это может быть ужасной идеей, хотя, если вам иногда, случайно, нужно много объектов в одной части экрана, какВы форсируете распространение.И что делать, если вам нужна другая кнопка где-то на экране, не рядом с текущей?Может быть немного запутанно с большим количеством областей.

Преимущество этого решения в том, что для создания всех объектов требуется предсказуемое время.Каждый раз должно быть одинаковым.

Переменное количество времени для создания объектов

Используйте метод checkPostion ().

Возможно, это простопроще использовать метод checkPostion () и получить новое случайное число.Если вы хорошо разбираетесь в этом, вы должны понимать, что во многих случаях вам нужно «перекатывать» только одну координату, а не обе.

...