11

本教程中的以下代码片段:http ://www.raywenderlich.com/24252/beginning-game-programming-for-teens-with-python

for badguy in badguys:
        if badguy[0]<-64:
            badguys.pop(index)
        badguy[0]-=7
        index+=1
    for badguy in badguys:
        screen.blit(badguyimg, badguy)

给我一个:

TypeError:“元组”对象不支持项目分配

我知道这可能是因为它badguy是一个元组。这意味着它是不可变的(您不能更改其值)我尝试了以下方法:

t= list(badguy)
        t[0]= t[0]-7
        i+=1

我将元组转换为列表,这样我们就可以减去 7。但在游戏中什么也没有发生。

有谁知道我能做什么?

谢谢。

4

3 回答 3

27

改变这个

badguy[0]-=7

进入这个

badguy = list(badguy)
badguy[0]-=7
badguy = tuple(badguy)

或者,如果您可以保留badguylist,那么甚至不要使用元组,并且您可以使用当前代码(增加了使用列表而不是元组的更改)

于 2013-10-12T19:24:35.477 回答
3

另一种解决方案是

badguy[0] -= 7

去做

badguy = (badguy[0] - 7,) + badguy[1:]

这将创建一个新的元组,其中包含第零个元素中的更新值。

于 2013-10-12T21:06:31.840 回答
0

你可以做一个 np.copy() 和她一起工作。

badguy_copy = np.copy(badguy)
于 2020-02-09T09:55:52.680 回答