gpt4 book ai didi

python - 如何从重叠的形状中获取输出? Python 3.5 Tkinter

转载 作者:太空宇宙 更新时间:2023-11-03 15:45:44 27 4
gpt4 key购买 nike

我正在尝试使用 tkinter 在 python 中制作一个类似于 Block Dodger 的游戏。我想做的是当一个矩形接触另一个矩形时进行输出。我找到了与我的问题类似的答案,但它没有解释要做什么以及如何使用该命令。这是我的代码:

from tkinter import *

def change_coord(event):
if event.keysym == 'Right':
canvas.move(a, 20,0)
if event.keysym == 'Left':
canvas.move(a, -20,0)

def tet1():
canvas.move(b, 0, 30)
root.after(250, tet1)

def tet2():
canvas.move(c, 0, 20)
root.after(250, tet2)

def tet3():
canvas.move(d, 0, 50)
root.after(250, tet3)


root = Tk()

canvas = Canvas(root, width=1000, height=5000, bg='white')
canvas.pack(pady=0)

a = canvas.create_rectangle(0, 0, 100, 100, fill='red')
b = canvas.create_rectangle(0, 0, 100, 100, fill='blue')
c = canvas.create_rectangle(0, 0, 100, 100, fill='blue')
d = canvas.create_rectangle(0, 0, 100, 100, fill='blue')


canvas.move(a, 450, 850)
canvas.move(c, 450, 0)
canvas.move(d, 675, 0)

canvas.bind("<Motion>", change_coord)
root.bind_all('<Left>', change_coord)
root.bind_all('<Right>', change_coord)

tet1()
root.after(200, tet2)
root.after(2000, tet3)

root.mainloop()

我不确定如何做到这一点,所以我希望得到一些帮助。谢谢 :)- jack

最佳答案

要检查a是否与任何对象重叠,您可以获取a坐标并与find_overlapping()一起使用。它为您提供重叠 a

的对象列表
def check_collision():

x1, y1, x2, y2 = canvas.coords(a)

result = canvas.find_overlapping(x1, y1, x2, y2)

if b in result:
print('b overlaps a')
if c in result:
print('c overlaps a')
if d in result:
print('d overlaps a')

root.after(250, check_collision)

您可以使用 after() 运行它

或者您可以分别对每个对象使用 find_overlapping - 然后您可以停止对象并从 Canvas 中删除。

def tet1():
canvas.move(b, 0, 30)

x1, y1, x2, y2 = canvas.coords(b)

result = canvas.find_overlapping(x1, y1, x2, y2)

if a in result:
print('b overlaps a')
canvas.delete(b)
else:
root.after(250, tet1)

关于python - 如何从重叠的形状中获取输出? Python 3.5 Tkinter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41779851/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com