2015-02-03 3 views
0

여기 벽에 공을 내 충돌 코드 - 파이썬에서 만든 (Codeskulptor는)퐁 게임 - 패들과의 공 충돌?

공은 하단과 상단 벽에 반사하고는 패들에 의해 명중되지 않은 경우 왼쪽과 오른쪽에서 사라 나는 헤엄을 치고 반등 공을 얻을 수 없다, 그러나

를 반복 중앙에 다시 나타납니다 - 패들 화면의 왼쪽에 배치 서클 개체 (높이/2)이다

어떤 도움이 것 감사합니다

#Bottom and top walls 
if Ballpos[1] >= (Height - Ballradius): 
    Ballvel[1] = - Ballvel[1] 
if Ballpos[1] <= (Ballradius): 
    Ballvel[1] = - Ballvel[1] 

if(Ballpos[0] <= 0): 
    Score2 += 1 
    Ball_Spawn(True) 
elif(Ballpos[0] >= Width): 
    Score1 += 1 
    Ball_Spawn(False) 


#Update Position of Ball 
Ballpos[0] += Ballvel[0] 
Ballpos[1] += Ballvel[1] 

답변

0

외륜선이 Padpos이며 반경이 Padradius 인 척하자. 귀하의 코드에서 좌표가 원의 중심을 나타내는 것처럼 보입니다 만, 제가 틀렸다면 필요한 조정을 할 수 있습니다.

if (Ballpos[0] - Padpos[0])**2 + (Ballpos[1] - Padpos[1])**2 <= (Ballradius + Padradius)**2: 
    # code for rebounding 

기본적으로 피타고라스 식의 정리를 적용하면 중심 사이의 거리가 반지름의 합보다 가까운 지 확인할 수 있습니다.

+0

FWIW의'math' 모듈에는 유클리드 거리를 계산하는 ['hypot()'] (https://docs.python.org/2/library/math.html#math.hypot) 함수가 있습니다 - Pythagorean 측정 기준의 또 다른 이름입니다. 매우 신속하게 결과를 'Ballradius + Padradius'와 비교하기 만하면되므로 답을 빠르게하고 단순화하는 데 사용할 수 있습니다. – martineau