将字符串转换为表数据类型

我有一些代码,我希望它从列表中随机选择一个字符串,并将其转换为数据类型以在joypad.set()函数中使用。 这是我的代码:

Buttons = { A = true,
        B = true,
        Down = true}
while (true) do
   Random = math.random(3)
   NewButton = (Buttons[Random])
   joypad.set(1, (NewButton))
   emu.frameadvance();
end;
点赞
用户6000025
用户6000025

你没有说明问题,但从你的代码来看,似乎你没有得到你所期望的数组值。你得到的是 1 到 3 之间的随机数,但 A、B 和 Down 不是 1、2 和 3。如果你声明 Buttons 为关联数组(键值对),那么如果你想这样使用它,就需要设置第二个数组,只包含键名,并从中获取一个随机索引,例如:

ButtonKeys = { "A", "B", "Down" }
Random = math.random(3)
NewButton = (Buttons[ButtonKeys[Random]])

这将创建一个表,将 A、B 和 Down 的值作为索引 1、2 和 3,所以你可以使用随机数从 ButtonKeys 数组获取值,然后将该值用作 Buttons 数组的索引。

编辑:我重新阅读了问题,并检查了我的原始答案,意识到我想到了你以不同的方式声明表格。在你声明表格的方式中,A、B 和 Down 成为 Buttons 的属性,你可以通过直接调用它们来访问它们,例如 Buttons.AButtons.BButtons.C,或者使用带有属性名的 string 的括号访问。在你的情况下,Buttons["A"]Buttons["B"]Buttons["Down"]

2016-03-01 00:44:09