Python 如何确定tkinter多边形是否发生碰撞?

Python 如何确定tkinter多边形是否发生碰撞?,python,tkinter,collision-detection,Python,Tkinter,Collision Detection,这是我目前的代码: from tkinter import * import winsound tk = Tk() def key(event): inp = '' + event.char if inp == 'w': canvas.move(p1,0,-5) winsound.Beep(1000,50) if inp == 's': canvas.move(p1,0,5) winsound.Beep(1

这是我目前的代码:

from tkinter import *
import winsound
tk = Tk()

def key(event):
    inp = '' + event.char
    if inp == 'w':
        canvas.move(p1,0,-5)
        winsound.Beep(1000,50)
    if inp == 's':
        canvas.move(p1,0,5)
        winsound.Beep(1000,50)
    if inp == 'a':
        canvas.move(p1,-5,0)
        winsound.Beep(1000,50)
    if inp == 'd':
        canvas.move(p1,5,0)
        winsound.Beep(1000,50)

    if inp == 'i':
        canvas.move(p2,0,-5)
        winsound.Beep(700,50)
    if inp == 'k':
        canvas.move(p2,0,5)
        winsound.Beep(700,50)
    if inp == 'j':
        canvas.move(p2,-5,0)
        winsound.Beep(700,50)
    if inp == 'l':
        canvas.move(p2,5,0)
        winsound.Beep(700,50)

def callback(event):
    canvas.focus_set()



canvas = Canvas(tk, width=600, height=600)
canvas.bind("<Key>", key)
canvas.bind("<Button-1>", callback)
canvas.pack()
p1 = canvas.create_polygon(10,10,20,10,15,0,fill='red')
p2 = canvas.create_polygon(510,10,520,10,515,0,fill='blue')
tk.update()


tk.mainloop()
从tkinter导入*
导入winsound
tk=tk()
def键(事件):
inp=''+event.char
如果inp=='w':
画布移动(p1,0,-5)
winsound.Beep(1000,50)
如果inp==“s”:
画布移动(p1,0,5)
winsound.Beep(1000,50)
如果inp=='a':
画布移动(p1,-5,0)
winsound.Beep(1000,50)
如果inp='d':
画布移动(p1,5,0)
winsound.Beep(1000,50)
如果inp==“i”:
画布移动(p2,0,-5)
winsound.Beep(700,50)
如果inp==“k”:
画布移动(p2,0,5)
winsound.Beep(700,50)
如果inp==“j”:
画布移动(p2,-5,0)
winsound.Beep(700,50)
如果inp=='l':
画布移动(p2,5,0)
winsound.Beep(700,50)
def回调(事件):
canvas.focus_set()
画布=画布(tk,宽度=600,高度=600)
canvas.bind(“,键)
canvas.bind(“,回调)
canvas.pack()
p1=画布。创建_多边形(10,10,20,10,15,0,fill='red')
p2=画布。创建_多边形(510,10520,10515,0,fill='blue')
tk.update()
tk.mainloop()
我想检查多边形是否相互碰撞,并在发生这种情况时发送“游戏结束”消息 因此,当它们发生碰撞时,我将执行打印('youlost'),但我不知道如何检查碰撞。

画布有一个方法,该方法将返回与矩形区域重叠的所有项目。您可以使用该方法获得给定玩家的直角坐标。如果您有非矩形对象,碰撞检测将不会100%精确,但它可能足够接近