【发布时间】:2016-08-31 20:36:23
【问题描述】:
如果我有一个代表世界的二维数组,它看起来像:
. . . . . . . . . . . . . . .
. P . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
. . . . . t . . . . . . . . .
. . . . . t . . . . . . . . .
. . . . . . t . . . . . . . .
. . . . . . . t . . . . . . .
. . . . . . . t t . . . . . .
. . . . . m . . . . . . . . .
. . . . . . m m . . . . . . .
. . . . . . . . m m . . . . .
. . . . . . . . . . m . . . .
. . . . . . . . . . m . . . .
. . . . . . . . . . . m . . .
. . . . . . . . . . . . . . .
m 代表mountains,t 代表trees,P 代表Player。
现在,假设我们有一个 Player 类,它跟踪数组中的 userpos 或用户位置,当前为 (1, 1):
class Player(object):
def __init__(self, x, y, array):
self.x = x
self.y = y
self.userpos = array[x][y]
如果我要在 Player 类中编写一个方法来处理基本的移动控制以编辑数组中 P 值的位置,我该如何跟踪 @ 周围的 8 个图块987654334@ 值?例如,我们可以看到当前playeruserpos 周围的所有图块都是. 的。
我想限制玩家移动到m 瓷砖上,因为它们是山脉。使用userpos 变量很容易识别当前图块,因为P 值仅添加到地图的字符串版本,而不是实际数组。然而,问题来自于试图将玩家移动到之前的位置。我希望能够将播放器返回到最近的 empty 或 . 磁贴,但不知道如何确定播放器应该移动到的数组内的哪个索引。
有没有更简单的方法来做到这一点,或者跟踪玩家周围的瓷砖是最简单的方法?
【问题讨论】:
标签: python arrays python-2.7 multidimensional-array