这些是随机放置的砖块,它们沿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/

10-16 10:57