Я никогда раньше не писал на python, но я пытаюсь выполнить обнаружение столкновений, когда сталкиваются два овала, один из овалов (пузырь/мина) будет удален.Python: Столкновения с овалами
def delete_bubble(k):
bubble_id[k].remove
bubble_r[k].remove
def get_dist(mine,sub):
x = c.coords(mine)
a = c.coords(sub)
#compare coordinates and if same, return 0
def collide():
for k in range(len(bubble_id)):
x = get_dist(bubble_id[k],ship_c)
if x == 0:
delete_bubble(k)
Как рассчитать расстояние между двумя овалами, мое и под? если x == a, то верните 0? Или мне нужно написать формулу расстояния для вычисления, или мне нужно найти центр каждого овала и сравнить? У меня есть радиус каждого овала, но я смущен тем, как писать это. Поскольку это является частью интерактивной игры, мне нужно постоянно проверять столкновения, как бы я реализую, что в основном:
#main game loop
for x in range(10):
create_mines(c)
window.after(40, move_mines, c)
window.after(10, collide) #does this work?
window.mainloop()
Вам нужно расстояние: Pythagoras 'a^2 + b^2 = c^2' где' c' - расстояние и 'a = x1-x2',' b = y1-y2'. И тогда вы можете сравнить 'c <= r1 + r2' или' c^2 <= (r1 + r2)^2', и вам не нужно использовать 'square root' – furas
И он должен быть в move_mines, как вы хотите вы проверяете каждый раз, когда что-то движется. –
Возможный дубликат [Как создать обнаружение конфликтов для моих прыгающих шаров?] (Http://stackoverflow.com/questions/780169/how-do-create-collision-detections-for-my-bouncing-balls) – Tersosauros