약간 큰 프로그램의 관련 부분 인 것 같습니다. 본질적으로 충돌 감지 기능입니다. 거품은 원래 원 목록입니다. 충격에 따라 충돌 한 원이 사라 지길 바란다. 나는 "if collide =="조건부에 내 문제가 있음을 확신합니다.충돌시이 원이 왜 사라지지 않습니까?
def getDistance(point1,point2):
a= point1.getX()
b= point2.getX()
c= point1.getY()
d= point2.getY()
distance= math.sqrt((b-a)**2 + ((d-c)**2))
return distance
def balloonBubbleCollide(balloon,bubble):
point1 = balloon.getCenter()
point2= bubble.getCenter()
distance= getDistance(point1, point2)
if distance <= 30:
return True
def check(balloon, bubbles, window):
for bubble in bubbles:
collide = balloonBubbleCollide(balloon, bubble)
if collide == True:
bubbles.remove(bubble)
main이 올바른 순서로 실행한다고 가정합니다. 그냥 코드로 게시물을 늪지 싶지 않아요.
반복하는 목록을 수정하지 마십시오. –
코딩 스타일에 대한 간단한 설명 : True와 비교할 필요는 없으며 간단히'충돌 할 경우 : ... '라고 말하면됩니다. 당신은 또한 'getter'함수를 많이 사용하는 것처럼 보이지만 간단한 매개 변수에 속성을 사용하는 것은 더 파이썬 적이기 때문에 ('point.x','point.y','balloon.center' 등) 사용하십시오. 이러한 속성은 나중에 언제든지 속성으로 업그레이드 할 수 있습니다. –
흥미로운 @BasSwinckels 나는 자습서에서 내가 보았던 것에 가까이 머물러 있었다. 나는 그것을 염두에 두겠다. – aero26