我正在用pygame
做一个游戏,遇到了一个问题。下面的函数应该是一个列表列表,根据墙/楼层包含1和0。但是,当我尝试编辑单个平铺时,整个列都会更改
def createDefault(width,height,tileW,tileH):
level = []
mid = []
level.append([1]*(width/tileW))
mid.append(1)
for i in range((width - (tileW * 2)) / tileW):
mid.append(0)
mid.append(1)
for i in range((height - (tileH * 2)) / tileH):
level.append((mid))
level.append([1]*(width/tileW))
return level
level = createDefault(640,640,64,64)
level[2][4] = 1
print level
印刷品(美化):
[[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]
如您所见,在数组中的每个列表中,值4都已更改为1。如何仅编辑列表2中的值,即字符4
您正在一次又一次地将同一个
mid
列表附加到level
:改为附加(浅)副本:
其中
list()
用复制的值创建一个新的列表对象相关问题 更多 >
编程相关推荐