2 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超10個(gè)贊
你的半徑是二十。在循環(huán)內(nèi)部,只測試 sqrg 和 blx 之間的歐幾里德距離是否在 20 以內(nèi)。

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
以下是基于您的代碼的精簡示例。它測量兩個(gè)移動(dòng)物體的中心之間的距離,以確定是否發(fā)生了碰撞。如果你設(shè)法讓球擊中方塊,球應(yīng)該直接彈起:
from random import randint
from time import sleep
from graphics import *
def distance(p1, p2):
return ((p2.x - p1.x) ** 2 + (p2.y - p1.y) ** 2) ** 0.5
wn = GraphWin("AK", 700, 700)
sqrg = Rectangle(Point(325, 625), Point(375, 675))
sqrg.setFill("red")
sqrg.draw(wn)
numx = randint(10, 700)
blx = Circle(Point(numx, 80), 20)
blx.setFill("blue")
blx.draw(wn)
xval, yval = 10, 0
bheading = 1
wn.getMouse()
for i in range(150):
sqrg.move(xval, yval)
if distance(blx.getCenter(), sqrg.getCenter()) < 25:
bheading *= -1
symbl = wn.checkKey()
if symbl == "Right":
xval = 10
elif symbl == "Left":
xval = -10
sleep(0.1)
blx.move(0, bheading * 20)
Cleary 不是一個(gè)可行的游戲,而是碰撞檢測的演示。
添加回答
舉報(bào)