在Lua 5.1中,可以使用io.read()来引用表格。

好的,这是我想要做的事情,我几乎确定我不知道要使用什么短语来找到我正在寻找的东西,所以我会尽力用有限的术语知识尽可能清晰明了地解释。

我正在使用lua(或者至少尝试)为D&D游戏生成赛道/段。

这里是我所做的事情,但是我无法弄清如何让一个表引用另一个表。无论我如何努力研究或玩耍,它都无法正常工作。

表丢弃:

--Track Tables
local raceClass =   { 'SS', 'S', 'A', 'B', 'C', 'D', 'N' }
local trackLength = { 50, 30, 25, 20, 15, 10, 5 }
local trackDifficulty = { 3, 3, 3, 2, 2, 1, 1 }
local trackTypes = { 'Straightaway', 'Curve', 'Hill', 'Water', 'Jump' }

所以,简要解释一下。首先,我们有赛车的类。 N是新手,SS是最困难的。接下来,我们有最终赛道的长度。 SS是50个段的赛道。 N是一个5段的赛道。每个比赛级别在每个赛道段上都有一个难度上限。 SS,S和A的上限都是3. D和N的上限为1.然后,每个赛道段被进一步分解为其类型。这些使用以下代码生成;

--Track Generation
math.randomseed(os.time())
for i = 1, trackLength do
    local trackTypeIndex = math.random(1, #trackTypes)
    local SP = math.random(1, trackDifficulty)  --SP is Stamina Cost for that segment.
    print(tracktypes[trackTypeIndex]..' of SP '..SP)
end
io.read() --So it doesn't just close the window but waits for some user input.

现在进入我开始自己迷失的部分。我希望DM能够输入所选的比赛级别并获得生成的赛道列表。

--DM Input
print('Race Class? N, D, C, B, A, S, SS")
io.flush()
local classChoice = io.read()

所以,DM输入了类选择,让我们使用N。我找不到的是一段可以将classChoice的值与raceClass配对的代码。然后使用该位置来选择trackLengthtrackDifficulty中的位置,最后运行剩余的代码段Track Generation推断正确的变量并打印结果,得到类似于以下内容;

Straightaway of SP 1
Curve of SP 1
Water of SP 1
Water of SP 1
Jump of SP 1

对于低端新手赛,它只有5个段长,最大困难度为1。但是,对于较高的班级,仍将生成更长,更困难的赛道。我试图尽可能具体,以最小化我在代码中的经验可能造成的任何混淆。

点赞
用户1190388
用户1190388

我认为你最好使用不同的表格结构:

local raceClass = {
    SS = {50, 3},
    S = {30, 3},
    A = {25, 3},
    B = {20, 2},
    C = {15, 2},
    D = {10, 1},
    N = {5, 1},
}

现在,你可以轻松访问 raceClass 的所有数据。代码如下:

print "Race Class? N, D, C, B, A, S, SS"
io.flush()
local classChoice = (io.read "*line"):upper()    -- 将输入转换为大写字符
if not raceClass[classChoice] then
    -- 输入有误
end
local SP, Length = raceClass[classChoice][2], raceClass[classChoice][1]
2014-04-02 05:32:28