Есть несколько способов, которыми вы можете программно реализовать желаемое поведение, учитывая, что у вас такое небольшое количество объектов.Тем не менее, я собираюсь предложить что-то немного другое.
Что если вы запустили все это как физический симулятор?Например, вы можете создать мир Box2D без гравитации, трения и идеально упругих столкновений.Вы можете смоделировать вашу замкнутую область и заполнить ее объектами, которые пропорционально больше, чем их экранные аналоги, чтобы экранные версии никогда не были слишком близко друг к другу (потому что базовые объекты в физическом моделировании столкнутся и изменят направление раньше).это может произойти), и назначьте каждому объекту случайное начальное положение и скорость.
Тогда все, что вам нужно сделать, - это перейти к моделированию физики и отобразить его текущее состояние в пользовательский интерфейс.Все сложные вещи обрабатываются для вас, и результат, вероятно, будет более правдоподобным / реалистичным, чем тот, который вы получили бы, пытаясь придумать свой собственный алгоритм движения (или, если вы хотите, чтобы он выглядел более случайным и менее правдоподобным, вы могли бытакже просто периодически применяйте случайный импульс к случайному объекту, чтобы непредсказуемо изменить ситуацию).