我正在与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?
答案 0 :(得分:0)
您一遍又一遍地将相同的单mid
列表追加到level
:
for i in range((height - (tileH * 2)) / tileH):
level.append((mid))
添加(浅)副本:
for i in range((height - (tileH * 2)) / tileH):
level.append(list(mid))
其中list()
创建一个包含复制值的新列表对象。