lua:用户输入到引用表

时间:2014-10-01 20:08:21

标签: lua lua-table

我的桌子出了问题,我正在用lua进行文字冒险

local locxy = {}
      locxy[1] = {}
      locxy[1][1] = {}
      locxy[1][1]["locdesc"] =  "dungeon cell"
      locxy[1][1]["items"] = {"nothing"}
      locxy[1][1]["monsters"] = {monster1}

[1] [1]指x,y坐标并使用移动命令我可以成功移动到不同的房间并接收所述房间的描述。

项目和怪物是嵌套表格,因为可以在那里保存多个项目(每个项目都有自己的属性)。

我遇到的问题是让物品/怪物部分工作。我有一个单独的表,如:

local monsters = {}
    monsters["rat"] = {}
    monsters["rat"]["Name"] = "a rat"
    monsters["rat"]["Health"] = 5
    monsters["rat"]["Attack"] = 1

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

print("You are in ", locxy[x][y]["locdesc"]) -- this works
print("You can see a ", locxy[x][y]["monsters]["Name"],".") - does not work

所以我想知道如何让它工作,我可能需要一种不同的方法,因为我正在学习。但我还特别想知道如何/如果可以在表条目中使用指向单独表中数据的变量。

感谢您提供任何帮助!

1 个答案:

答案 0 :(得分:1)

这一行

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

  1. locxy表中查找x字段
  2. 然后查看该值的y字段
  3. 查看该值的“怪物”字段
  4. 然后查看该值的"Name"字段
  5. 问题是您从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