砖破碎机 - 砖碰撞

时间:2017-07-31 13:07:49

标签: python pygame

我正在制作一个pygame砖突破..我创造了一切,现在我试图在与球相互作用时移除砖块。问题是球击中砖块,砖块消失并立刻出现..代码:

$(function () {
  $('[data-toggle="popover"]').popover()
})

这是我测试碰撞的地方:我打电话给brick_1 [0] =(1000,1000),砖块消失并出现。

class Bricks(object):
def __init__(self):
    pass

def draw(self, ball_x, ball_y):
    num_1 = 0
    num_2 = 0
    num_3 = 0
    num_4 = 0
    bricks_1 = [
        (50, 200),
        (200, 200),
        (350, 200),
        (500, 200),
        (650, 200)
        ]

    bricks_2 = [
        (50, 150),
        (200, 150),
        (350, 150),
        (500, 150),
        (650, 150)
    ]

    bricks_3 = [
        (50, 100),
        (200, 100),
        (350, 100),
        (500, 100),
        (650, 100)
    ]

    bricks_4 = [
        (50, 50),
        (200, 50),
        (350, 50),
        (500, 50),
        (650, 50)
    ]

逐行绘制砖块

    if ball_x > bricks_1[0][0] and ball_x-100 < bricks_1[0][0] and ball_y-25 < bricks_1[0][1] and ball_y > bricks_1[0][1]:
        bricks_1.remove(bricks_1[0])

1 个答案:

答案 0 :(得分:1)

这是因为每当您在draw()课程中调用Brick函数时,brick_1的列表都会重置。

我们现在就说这是我的清单:

brick_1 = [1, 2, 3, 4] 

如果我使用brick_1.remove(brick_1[0]),我的列表现在是:

[2, 3, 4]

因为我的第一件商品已被删除。 但是当我调用draw()时,它会将列表重置为正常,因为您将列表存储在函数中。这是因为在您的函数中,您将原始列表重新分配给brick_1

bricks_1 = [
    (50, 200),
    (200, 200),
    (350, 200),
    (500, 200),
    (650, 200)
    ]

将列表存储为全局变量(类外)应该有效。