我正在编写一个基本的地下城爬行器,而且我在地图上导航时遇到了问题。我有一个存储在列表列表中的地图,如下所示:
map = [
[0,0,0,0,0],
[0,1,1,1,0],
[0,1,0,1,0],
[0,1,1,1,0],
[0,0,0,0,0]
]
所有1代表房间,0代表墙壁。
我在地图上移动的代码将玩家位置表示为X,Y坐标,然后将地图作为参数传递给函数,使用X,Y坐标作为索引参考。 (因此,Y将是要引用的列表,X将是该列表中的哪个项目)
所以我的代码:在X,Y轴上指出玩家位置;通过传递地图和X,Y作为参数,要求玩家输入上,下,左,右;检查索引位置+ 1是否不是0;然后如果它是免费的,则将玩家位置相应地更新为1。这就是下面的全部内容:
playerPosX = 1
playerPosY = 1
map = [
[0,0,0,0,0],
[0,1,1,1,0],
[0,1,0,1,0],
[0,1,1,1,0],
[0,0,0,0,0]
]
def goRight(posX, posY, map):
if map[posY][posX + 1] == 0:
print('You can\'t go that way.')
else:
posX += 1
return posX
def goLeft(posX, posY, map):
if map[posY][posX - 1] == 0:
print('You can\'t go that way.')
else:
posX -= 1
return posX
def goDown(posX, posY, map):
if map[posY + 1][posX] == 0:
print('You can\'t go that way.')
else:
posY += 1
return posY
def goUp(posX, posY, map):
if map[posY - 1][posX] == 0:
print('You can\'t go that way.')
else:
posY -= 1
return posY
while True:
print(playerPosX, playerPosY)
print('North(n), South(s), West(w), East(e), or Quit(q)?')
direction = input()
if direction == 'w':
playerPosX = goLeft(playerPosX, playerPosY, map)
elif direction == 'e':
playerPosX = goRight(playerPosX, playerPosY, map)
elif direction == 'n':
playerPosY = goUp(playerPosX, playerPosY, map)
elif direction == 's':
playerPosY == goDown(playerPosX, playerPosY, map)
elif direction == 'q':
print('Thank you for playing!')
break
else:
print('I didn\'t catch that.')
我遇到的问题是除了goDown函数之外,所有代码都应该正常工作。列表的Y索引位置不会递增1.我添加了显示玩家位置的打印功能,因此您可以看到它在其他所有方向都有效。
有没有人发现我做错了什么?我对编程很新,所以这可能是一个根本性的错误,甚至可能只是一个错字。我已经被困了多年了!
由于
答案 0 :(得分:0)
playerPosY == goDown(playerPosX, playerPosY, map)
应该是
playerPosY = goDown(playerPosX, playerPosY, map)
你有一个等价运算符而不是赋值