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

2024-04-26 12:06:25 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我目前为止的代码:

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()

我想检查多边形是否相互碰撞,并在发生这种情况时发送“游戏结束”消息 所以当它们碰撞时,我会做print('you lost'),但我不知道如何检查碰撞。在


Tags: keyimporteventmoveifbinddefcallback
1条回答
网友
1楼 · 发布于 2024-04-26 12:06:25

{canvas}返回一个包含^所有项的矩形}方法。您可以使用bbox方法来获得给定播放器的直角坐标。如果你有非矩形物体,碰撞检测不会是100%精确,但它可能会足够接近。在

相关问题 更多 >