Я пытаюсь создать обнаружение столкновений в моей программе tkinter. Как видите, у меня есть два шара, которые движутся по холсту. Мне нужно использовать теорему Пифагора, поэтому я пытаюсь найти координаты центра шаров. Для зеленого шара я попробовал posgreen [2] - posgreen [0], чтобы получить x, однако, когда я распечатываю это, я получаю 30, и это никогда не меняется, posgreen [2] и possgreen [0] при распечатке изменяется с каждый l oop, однако, когда я вычитаю их, они, кажется, не меняются за l oop. Я их другой способ отработать центральное положение мяча, как он движется?
from tkinter import *
import random
import time
root = Tk()
def balls():
#speeds for each ball
green_x_speed, green_y_speed = [1,1]
red_x_speed, red_y_speed = [1,1]
canvas = Canvas(root, width = 1000, height = 1000, bg="grey")
root.title("collision detection")
canvas.grid()
greenball = canvas.create_oval(5, 5, 35, 35, fill="green")
redball = canvas.create_oval(960, 960, 990, 990, fill="red")
while True:
#greenball
canvas.move(greenball, green_x_speed, green_y_speed)
posgreen = canvas.coords(greenball)
if posgreen[3] >= 1000 or posgreen[1] <= 0:
green_y_speed = -green_y_speed
if posgreen[2] >= 1000 or posgreen[0] <= 0:
green_x_speed = -green_x_speed
#redball
canvas.move(redball, red_x_speed, red_y_speed)
posred = canvas.coords(redball)
if posred[3] >= 1000 or posred[1] <= 0:
red_y_speed = -red_y_speed
if posred[2] >= 1000 or posred[0] <= 0:
red_x_speed = -red_x_speed
#collision example
x = posgreen[2]
y = posgreen[0]
z = x - y
print(x,y, z )
print(posgreen[2] - posgreen[0])
root.update()
time.sleep(0.01)
pass
balls()
root.mainloop()