python - Pygame - 如何实现可以相互碰撞的 block ?

标签 python pygame

这些是随机放置的砖 block ,它们沿着 x 轴从一堵墙向左向右移动。我想让所有砖 block 都相互碰撞,例如,如果其中一个砖 block 撞到另一 block 砖 block ,则速度必须为-speed

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

我的代码如下:

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

最佳答案

您必须添加另一个嵌套循环才能使用每个 block 与所有其他 block 的colliderect。您还需要检查两个 block 实例是否不是同一个对象 block 不是 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 - 如何实现可以相互碰撞的 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47510667/

相关文章:

python - 尝试使用 asin() 时出错,提示未定义名称 'math'

python - 如何将两个变量连接在一起以创建用户名?

python - 在pygame中点击按钮

python - python pygame 中的分数没有变化

python - 拼接字符串以获取从第一个空格左侧到右侧空格右侧的所有内容

python - 重新加载已导入到另一个模块的模块

python - 根据另一列的条件,根据一列的最大值是否等于特定值来过滤组

python - 服务器发送的速度快于客户端的接收速度

python - 如何使用KEYDOWN?

python - 2D 游戏中的运动(blitting 时的圆形位置?)