pygame Rect组没有移动

时间:2017-08-11 10:52:53

标签: python python-2.7 pygame

我有问题。在我的pygame代码中,有一组villians,它们总是朝向英雄。在这个函数中,我尝试用一​​定量的步骤(-5)更新villian的每个rect的x和y值,但是rects不会从屏幕上的初始阶段改变。这个功能有什么问题?谢谢。

def updateXY_villians():####################### not updating ################
    global lstVillainRect
    for villian in lstVillainRect:
        villian = villian.move(-5, 0)


def CreateVillainsRect(lstVillainXY_type):
    lstVillainRect = []
    for x, y, tiles in lstVillainXY_type:
        lstVillainRect.append(pygame.Rect(x, y, CUBE_WIDTH, CUBE_HEIGHT))
    return lstVillainRect

def makeListOfVillainXY_type():
    global lstVillainXY_type
    lstVillainXY_type = []
    lastI = 0
    for i in range(CHARACTER_START_PLACE_X + 100, SCREEN_WIDTH - 20, 200):
        type = random.randrange(0, 5)
        x = random.randrange(lastI, i)
        y = lst_villain_y[type]
        lstVillainXY_type.append((x, y, type))
        lastI = i
    for x, y, type in lstVillainXY_type:
        for restX, restY, restType in lstVillainXY_type:
            if abs(x - restX) < CUBE_WIDTH:
                lstVillainXY_type.remove((restX, restY, restType))
    return sorted(lstVillainXY_type)

1 个答案:

答案 0 :(得分:0)

updateXY_villians中,您不更新列表中的villian(rect),而是创建一个新的rect并将其指定给名称villianvillian变量在下一次迭代中被覆盖,最后villian矩形丢失。

for villian in lstVillainRect:
    villian = villian.move(-5, 0)

要更新列表中的rects,您需要调用move_ip方法,将rect 移动到位而不创建新的rect。

for villian in lstVillainRect:
    villian.move_ip(-5, 0)