这些是随机放置的砖块,它们沿x轴从一壁到另一壁向左和向右移动。我想让所有积木相互碰撞,例如,如果其中一个撞到另一块积木,则speed
必须为-speed
。
brick = []
for in range(50):
block = Brick()
brick.append(block)
我的代码如下:
if block.rect.colliderect(block.rect.colliderect):
block.speed *= -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
而不是两个循环。关于python - Pygame-如何实现可能相互碰撞的块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47510667/