问题描述
我目前正在用 python 开发一个游戏,并做了一个功能来检查是否可以进行移动,但是每次我运行功能时,源变量“Xlist”都会改变。
功能:
def testIfPossible(key,Xlist):
print(Xlist,'\n')
print(move(key,Xlist),'\n')
print(Xlist,'\n')
if Xlist==move(key,Xlist):
return False
return True
def move(key,lst):
if key=='down arrow':
for _ in range(lenY*lenX):
for y in range(lenY):
for x in range(lenX): # Basically just moves evrery element to the bottom
with suppress(IndexError):
if lst[y+1][x]==lst[y][x] and lst[y][x]!=0:
lst[y+1][x]=lst[y][x]*2; lst[y][x]=0
elif lst[y][x] != 0 and lst[y+1][x]==0:
lst[y+1][x]=lst[y][x]; lst[y][x]=0
del x,y
return lst
elif key=='up arrow':
for _ in range(lenY*lenX):
for y in range(lenY):
for x in range(lenX):
with suppress(IndexError):
if y!=0:
if lst[y-1][x]==lst[y][x] and lst[y][x]!=0:
lst[y-1][x]=lst[y][x]*2; lst[y][x]=0
elif lst[y][x] != 0 and lst[y-1][x]==0:
lst[y-1][x]=lst[y][x]; lst[y][x]=0
del x,y
return lst
elif key=='right arrow':
for _ in range(lenY*lenX):
for y in range(lenY):
for x in range(lenX):
with suppress(IndexError):
if lst[y][x+1]==lst[y][x] and lst[y][x]!=0:
lst[y][x+1]=lst[y][x]*2; lst[y][x]=0
elif lst[y][x] != 0 and lst[y][x+1]==0:
lst[y][x+1]=lst[y][x]; lst[y][x]=0
del x,y
return lst
elif key=='left arrow':
for _ in range(lenY*lenX):
for y in range(lenY):
for x in range(lenX):
with suppress(IndexError):
if x!=0:
if lst[y][x-1]==lst[y][x] and lst[y][x]!=0:
lst[y][x-1]=lst[y][x]*2; lst[y][x]=0
elif lst[y][x] != 0 and lst[y][x-1]==0:
lst[y][x-1]=lst[y][x]; lst[y][x]=0
del x,y
return lst
else:
print('No match for: ',key)
return lst
Xlist 的列表语法:
例如
[[0,8,0],[4,[2,4]]
我做错了什么? 感谢安万斯!
(我没有把整个代码放在这个问题中,因为它很长而且stackoverflow并没有真正接受它)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)