Lua:将用户输入转换为引用表。

我在创建用 Lua 制作的文本冒险游戏中遇到了表格的问题。

local locxy = {}
      locxy[1] = {}
      locxy[1][1] = {}
      locxy[1][1]["locdesc"] =  "地牢牢房"
      locxy[1][1]["items"] = {"无"}
      locxy[1][1]["monsters"] = {monster1}
\[1\]\[1\] 是 x,y 坐标,使用移动命令后我可以成功地移动到不同的房间并获取该房间的描述。

物品和怪物是嵌套表,因为可以存放多个物品(每个物品具有其自己的属性)。

我遇到的问题是如何让物品/怪物部分发挥作用。我有一个单独的表,如下所示:

local monsters = {} monsters["rat"] = {} monsters["rat"]["Name"] = "一只老鼠" monsters["rat"]["Health"] = 5 monsters["rat"]["Attack"] = 1


我使用这样的表格来创建各种敌人类型的轮廓。monster1 变量可插入到位置表中,以调用其中一个轮廓,但我不知道如何引用它。

print("你在", locxy[x][y]["locdesc"],"里。") -- 这个可以运作 print("你可以看到一只", locxy[x][y]["monsters]["Name"], "。") - 不可行

```

因此,我想知道如何使其工作,我可能需要不同的方法,这是可以的,因为我正在学习。但我也特别想知道如何/是否可能在表格条目中使用指向另一个表格中的数据的变量。

感谢您所提供的任何帮助!

点赞
用户258523
用户258523

这行代码

locxy[x][y]["monsters]["Name"]

表示:

  1. locxy 表中查找 x 字段
  2. 然后在该值的 y 字段中查找
  3. 在该值的 "monsters" 字段中查找
  4. 然后在该值的 "Name" 字段中查找

问题是从 locxy[x][y]["monsters"] 得到的表中没有 "Name" 字段。它具有一些在数字索引中的条目。

locxy[x][y]["monsters][1]["Name"] 将获取该表中的第一个怪物的名称,但您需要在怪物表中循环来获取它们所有的名称。

样式注释:

代替:

tab = {}
tab[1] = {}
tab[1][1] = {}

你可以使用:

tab = {
    [1] = {
        {}
    }
}

代替:

monsters = {}
monsters["rat"] = {}
monsters["rat"]["Name"] = "foo"

你可以使用:

monsters = {
    rat = {
        Name = "foo"
    }
}

或者如果你希望你的键明确一些,你可以使用["rat"]["Name"]

同样,代替 monsters["rat"]["Name"] 你可以使用 monsters.rat.Name

2014-10-01 20:15:40