Сравнение нескольких объектов PyGame/обнаружение столкновенийPython

Программы на Python
Ответить
Anonymous
 Сравнение нескольких объектов PyGame/обнаружение столкновений

Сообщение Anonymous »

Мне удалось создать столкновение двух объектов в PyGame, используя расчет евклидова расстояния.
  • Созданные круги движутся по экрану, изменяя координаты на основе значений «гравитации» или «отскока», изменяющих скорость в заданном направлении.
  • У меня возникли проблемы с применением этой логики к более чем двум объектам.
  • Я пытаюсь выполнить один цикл по списку созданных объектов.
  • Затем второй вложенный цикл снова проходит по этому списку.
  • Во втором цикле я пытаюсь проверить расстояние от одного объекта до другого.
  • Проблема в том, что при наличии более 20 объектов он замедляется, так как ему приходится вычислить расстояние от одного объекта до другого одновременно во время его работы
Теперь я не прошу код или решение, а просто указываю правильное направление и рассказать мне, почему этот подход плох и какой может быть лучше.
Большое спасибо!
Это работает для 2 созданных объекта:
def collisionDetection(objectOne,objectTwo):
euclidianDistance = ((objectOne.x-objectTwo.x)**2+(objectOne.y-objectTwo.y)**2)**0.5
if(abs(euclidianDistance)0):
for i in range(n):
print(f'Current [x] [y] coordinates for objects {ballObjects.ballNumber} are: [{ballObjects.x}] [{ballObjects.y}]')
for x in range(i+1,n):
collisionDetection(ballObjects, ballObjects[x])


Подробнее здесь: https://stackoverflow.com/questions/791 ... -detection
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»