【问题标题】:Multidimensional array for a text based game [closed]基于文本的游戏的多维数组[关闭]
【发布时间】:2013-07-08 15:44:20
【问题描述】:

所以我正在尝试创建一个基于文本的游戏,有人建议我将地图数据存储为多维数组多维数组。在我看来,这将是非常困难的,但我不得不问,因为我自己无法弄清楚。如果这个问题太模糊,请告诉我应该更具体的内容。

【问题讨论】:

  • 这是什么游戏,主旨是什么?
  • @Markus Meskanen 这有点像 Zork,就导航的设置方式而言

标签: python arrays multidimensional-array


【解决方案1】:

多维数组只不过是一个数组,其元素映射到另一个数组,通常其中每个“子数组”的大小都相等(但不严格)。

inner = [ "" ] * 10
outer = [ [].extend(inner) for x in inner ]

这将为您创建一个 10 x 10 元素的方形多维数组。

您可以通过以下方式访问这些元素:

outer[outer_index][inner_index]

只需在网格上可视化外部和内部以及索引,外部遍历 x 轴,内部遍历 y 轴。上面的数组看起来有点像这样:

"" "" "" "" "" "" "" "" "" "" 0
"" "" "" "" "" "" "" "" "" "" 1
"" "" "" "" "" "" "" "" "" "" 2
"" "" "" "" "" "" "" "" "" "" 3
"" "" "" "" "" "" "" "" "" "" 4  (inner)
"" "" "" "" "" "" "" "" "" "" 5
"" "" "" "" "" "" "" "" "" "" 6
"" "" "" "" "" "" "" "" "" "" 7
"" "" "" "" "" "" "" "" "" "" 8
"" "" "" "" "" "" "" "" "" "" 9
0  1  2  3  4  5  6  7  8  9

         (outer)

如果我在元素 6 和 8 处更新 outer 的值,网格将会改变:

outer[6][8] = "X" # marks the spot

"" "" "" "" "" "" "" "" "" ""  0
"" "" "" "" "" "" "" "" "" ""  1
"" "" "" "" "" "" "" "" "" ""  2
"" "" "" "" "" "" "" "" "" ""  3
"" "" "" "" "" "" "" "" "" ""  4  (inner)
"" "" "" "" "" "" "" "" "" ""  5
"" "" "" "" "" "" "" "" "" ""  6
"" "" "" "" "" "" "" "" "" ""  7
"" "" "" "" "" "" "X" "" "" "" 8
"" "" "" "" "" "" "" "" "" ""  9
0  1  2  3  4  5  6  7  8  9

         (outer)

希望这会有所帮助。

【讨论】:

  • 这确实帮助我忽略了分配内部和外部坐标的需要。
【解决方案2】:

手动创建多维列表

world_map = [['*', '*', '*', '*'],
             ['*', ' ', 'i', '*'],
             ['*', ' ', ' ', '*'],
             ['*', '*', '*', '*']]

* 是一面墙,i 可能是玩家。 要遍历这个世界地图,请使用两个 for 循环:

for row in world_map:
    for column in row:
        print(column, end="")
    print()

这将打印世界地图。

如果您需要向左移动播放器,您可以执行以下操作:

for row in world_map:
    for i, column in enumerate(row):
        if column == "i":
            if i > 0 and row[i - 1] == ' ':
                row[i - 1] = 'i'
                row[i] = ' '

如果您知道元素的位置,也可以直接使用world_map[row][column] 访问元素。

您将不得不自己完成其余的工作。 此外,这可能不是最好的方法,您应该使用播放器类等,但这对初学者来说很好:)

【讨论】:

  • 非常感谢,这些信息对我应该如何在地图上移动很有帮助,而且清晰的解释也很棒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 2021-06-25
  • 1970-01-01
  • 2016-04-01
  • 1970-01-01
  • 2013-07-08
相关资源
最近更新 更多