我正在做一個涉及tkinter的小專案,我需要弄清楚如何讓球互相彈跳。
下面是代碼:
from tkinter import *
# 畫布的尺寸300
HEIGHT=400
# 創建視窗和canvas
window = Tk()
canvas = Canvas(window, width=WIDTH, height=HEIGHT, bg='#ADF6BE')
canvas.pack()
# 球的起始位置0
y =10
# 球的起始位置1
x1 =100
y1 =0
# 球1的每個時間步長的移動距離10
dy=10
# 球2的每個時間步長的移動距離10
dy1 =10
# 球的直徑30
while True:
x = x dx
y = y dy
x1 = x1 dx1
y1 = y1 dy1
# If ball get to edge then we need to.
# 改變運動方向。
if x >= WIDTH-ballsize or x <= 0 or x == x1。
dx = -dx
print("x="/span>, x)
print('y=', y)
if y >= HEIGHT-ballsize or y <= 0 or y == y1。
dy = -dy
print("x="/span>, x)
print('y=', y)
if x1 >= WIDTH-ballsize or x1 <= 0 or x1 == x。
dx1 = -dx1
print("x1="/span>, x1)
print('y1=', y1)
if y1 >= HEIGHT-ballsize or y1 <= 0 or y1 == y。
dy1 = -dy1
print("x1="/span>, x1)
print('y1=', y1)
#創建球
ball=canvas.create_oval(x, y, x ballsize, y ballsize, fill="white", outline='white')
ball1 = canvas.create_oval(x1, y1, x1 ballsize, y1 ballsize, fill="white"/span>, outline='white'/span>)
#顯示球。
canvas.update()
canvas.after(50)
#remove ball[/span]。
canvas.delete(ball)
canvas.delete(ball1)
window.mainloop()
它們在畫布的墻壁上移動和彈跳,但不會互相彈跳。
這里有一張圖片來顯示我的意思,而不是互相撞擊和彈開
uj5u.com熱心網友回復:
你必須檢查球之間的距離。 如果兩個圓的中心距離小于圓的半徑之和,那么它們就會發生碰撞。
(math.sqrt((ball1.x- ball2.x) ** 2 (ball1.y - ball2.y) ** 2) <= sum_radii
然后改變球的dy和dx。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/315135.html
標籤:
