所以我在python中开始了一个简单的roguelike游戏项目,但是我在编辑一个重复列表时遇到了问题。代码如下:
charx = 1
chary = 1
level = [["#","#","#","#","#","#","#"],["#",".",".",".",".",".","#"],["#",".","#",".",".",".","#"],["#","#","#","#","#","#","#"]]
while True:
move = raw_input("u,d,l or r: ")
if move=="u":
if level[chary-1][charx]!="#":
chary-=1
elif move=="d":
if level[chary+1][charx]!="#":
chary+=1
elif move=="r":
if level[chary][charx+1]!="#":
charx+=1
elif move=="l":
if level[chary][charx-1]!="#":
charx-=1
display_level=level
display_level[chary][charx]="@"
for row in display_level:
print "".join(row)
for row2 in level:
print ",".join(row2)
如您所见,我创建了名为 level 的列表,其中列表中的每个列表都是一行。说明了字符的起始行和列位置。
然后循环询问您是否要向上、向左或向右移动。它会检查路上是否有墙(# 字符)并做出相应的反应。
如您所见,它复制了名为 display_level 的关卡,然后将“@”作为字符放到显示关卡上。然而,问题是改变 display_level 也会无缘无故地改变 level,即使它们是分开的,并且每次循环运行时都会使 display_level=level。
display_level 和 level 然后分别打印,它显示 level 正在沿 display_level 一侧进行编辑,这是不应该发生的。
所以我想知道的是为什么更改 display_level 的一部分会更改级别以及如何修复它。
非常感激