2017-11-27 4 views
1

이들은 x 축을 따라 벽에서 ​​벽으로 왼쪽과 오른쪽으로 움직이는 무작위로 배치 된 벽돌입니다. 나는 모든 벽돌이 그들 자신과 충돌하고 싶다. 예를 들어 그들 중 하나가 다른 벽돌을 때리는 경우, speed-speed이어야한다.파이 게임 - 서로 충돌 할 수있는 블록을 구현하는 방법은 무엇입니까?

brick = [] 
for in range(50): 
    block = Brick() 
    brick.append(block) 

내 코드는 다음과 같습니다 :

if block.rect.colliderect(block.rect.colliderect): 
    block.speed *= -1 

답변

1

당신은 다른 모든 블록과 각 블록의 colliderect를 사용하는 중첩 루프를 다른를 추가해야 할 것이다. 또한 두 블록 인스턴스가 동일한 객체 block is not other_block이 아닌지 확인해야합니다.

for block in brick: 
    for other_block in brick: 
     if block is not other_block and block.rect.colliderect(other_block.rect): 
      block.speed *= -1 

또한 대신 두 개의 루프의 itertools.product를 사용할 수 있습니다.