我正在制作一个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])
答案 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)
]
将列表存储为全局变量(类外)应该有效。