如何使用 Lua 将控件映射到 NES 模拟器?
How to map to controls into an NES emulator with Lua?
我正在尝试做一些类似于 Mari/o 所做的事情,但使用不同的 AI 原理和技术。
但是,我无法弄清楚如何将 Lua 脚本的输入实际发送到模拟器(例如,左上右下 a b 等)。
我想弄清楚编写 Mari/o 的人是如何在他的脚本中做到这一点的,但我正在摸不着头脑想弄清楚它是如何工作的。
那么,有人可以向我解释一下将输入映射到 NES 模拟器的工作原理吗?
到目前为止的代码..(这是使用 FCEUX 模拟器)
inputTable = joypad.read(1);
for k, v in pairs (inputTable) do
if(k == "right") then
v = true;
end;
print(k, v);
end;
while (true) do
joypad.set(1, inputTable);
joypad.write(1, inputTable);
emu.frameadvance();
end;
但是,我认为 joypad.set 或 joypad.write 不适合设置输入,因为它们除了覆盖玩家输入外似乎没有做任何事情。
您在这里的任何时候实际上都没有分配到 `inputTable。
变量v
是for
循环中的局部变量。这不是 pointer/reference/etc。到 table.
中的值
要分配给 table,您需要在循环中实际分配给 inputTable[k]
。
我正在尝试做一些类似于 Mari/o 所做的事情,但使用不同的 AI 原理和技术。
但是,我无法弄清楚如何将 Lua 脚本的输入实际发送到模拟器(例如,左上右下 a b 等)。
我想弄清楚编写 Mari/o 的人是如何在他的脚本中做到这一点的,但我正在摸不着头脑想弄清楚它是如何工作的。
那么,有人可以向我解释一下将输入映射到 NES 模拟器的工作原理吗?
到目前为止的代码..(这是使用 FCEUX 模拟器)
inputTable = joypad.read(1);
for k, v in pairs (inputTable) do
if(k == "right") then
v = true;
end;
print(k, v);
end;
while (true) do
joypad.set(1, inputTable);
joypad.write(1, inputTable);
emu.frameadvance();
end;
但是,我认为 joypad.set 或 joypad.write 不适合设置输入,因为它们除了覆盖玩家输入外似乎没有做任何事情。
您在这里的任何时候实际上都没有分配到 `inputTable。
变量v
是for
循环中的局部变量。这不是 pointer/reference/etc。到 table.
要分配给 table,您需要在循环中实际分配给 inputTable[k]
。