from tkinter import *
import time
root = Tk()
canvas =Canvas(root, width=1000, height=1000, bg= '#2B2B2B')
canvas.pack()
#id1 white
x = 400
y = 400
r = 50
#rc2 orange
f = 100
d = 400
r2 =100
id1 = canvas.create_oval(x - r, y - r, x + r, y + r, outline='white')
id2 = canvas.create_oval(f - r2, d - r2, f + r2, d + r2, outline='#CC7832')
def move_circle():
for k in range(31):
time.sleep(0.025)
canvas.move(id2, 5, 0)
canvas.update()
def get_coords(id_num):
pos = canvas.coords(id_num)
x = (pos[0] + pos[2])/2
y = (pos[1] + pos[3])/2
print(x, y)
return x, y
from math import sqrt
def distance(id1, id2):
x1, y1 = get_coords(id1)
x2, y2 = get_coords(id2)
print("distance", x1, y1, x2, y2)
return sqrt((x2 - x1)**2 + (y2 - y1)**2)
def delete_circle(): #12
if distance(id1, id2) < (r+r2):
canvas.delete(id2)
move_circle()
delete_circle()
root.mainloop()
'' 'こんにちは、id1に当たると削除する円id2を取得しようとしています。現時点では、移動範囲内で が31〜89の間に設定されている場合にのみ、これが機能します。この理由は、移動機能がループを完了したときにのみ削除機能が実行されるためです。私は解決策は、何らかの理由で、ループ中に発生すると、座標の変更にアクセスするために削除関数を取得することだと思います。しかし、私はこれをやろうとしている最中に壁を打った。どんな助けでも大歓迎です。百万円前払いありがとうございます。Pythonで別のサークルと衝突して動いているサークルを削除する方法
はあなたがループの移動の円内から削除円を呼び出して(と円は私が削除した場合、おそらくループを抜け出し)みました –
私はdelete_circleを取得しようとしています()は、31-39の後の範囲、すなわち例えば100の範囲で作業する。どうもありがとう。 –
申し訳ありませんJeremy、あなたのコメントを見て、あなたの提案を見て、 –