lua:用户对参考表的输入

lua:用户对参考表的输入,lua,lua-table,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坐标,使用移动命令,我可以成功地移动到不同的房间,并接

我的桌子有问题,我在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
所以我想知道我如何才能让它发挥作用,我可能需要一种不同的方法,因为我正在学习。但我还特别想知道如何/如果可能的话在一个表条目中使用一个变量,该变量指向一个单独表中的数据

感谢您提供的任何帮助

这条线

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

  • locxy
    表中查找
    x
    字段
  • 然后查看该值的
    y
    字段
  • 看看这个值的“怪物”字段
  • 然后查看该值的
    “Name”
    字段
  • 问题是从
    locxy[x][y][“monsters”]
    返回的表没有
    “Name”
    字段。它在数字索引中有一些条目

    locxy[x][y][“怪物][1][“名称”]
    将为您获取该表中第一个怪物的名称,但您需要在怪物表上循环以获取所有怪物

    样式说明:

    而不是:

    tab = {}
    tab[1] = {}
    tab[1][1] = {}
    
    monsters = {}
    monsters["rat"] = {}
    monsters["rat"]["Name"] = "foo"
    
    您只需使用:

    tab = {
        [1] = {
            {}
        }
    }
    
    monsters = {
        rat = {
            Name = "foo"
        }
    }
    
    而不是:

    tab = {}
    tab[1] = {}
    tab[1][1] = {}
    
    monsters = {}
    monsters["rat"] = {}
    monsters["rat"]["Name"] = "foo"
    
    您只需使用:

    tab = {
        [1] = {
            {}
        }
    }
    
    monsters = {
        rat = {
            Name = "foo"
        }
    }
    
    或者
    [“rat”]
    [“Name”]
    如果您想在键中显式显示


    类似地,您可以使用
    monsters.rat.Name

    而不是
    monsters[“rat”][“Name”]
    来代替
    monsters[“rat”][“Name”]
    ,感谢您的快速而有用的响应。