【问题标题】:lua: user input to reference tablelua:用户输入到引用表
【发布时间】:2014-10-02 04:15:40
【问题描述】:

我的表格有问题,我正在 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

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

感谢您提供的任何帮助!

【问题讨论】:

    标签: lua lua-table


    【解决方案1】:

    这一行

    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"]

    【讨论】:

    • 感谢您的快速而有帮助的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    相关资源
    最近更新 更多