Input 是否有一个“问题”;“获取键盘输入”;Lua中的函数?(箭头键)
我想知道您是否可以像Java、C+等一样接收键盘输入,或者是否没有外部库 以下是关于2D迷宫游戏的一些信息: 您可以使用箭头键在迷宫中导航。使用向上和向下箭头键选择菜单中的对象,例如: -->新游戏 负荷游戏 选择权Input 是否有一个“问题”;“获取键盘输入”;Lua中的函数?(箭头键),input,lua,Input,Lua,我想知道您是否可以像Java、C+等一样接收键盘输入,或者是否没有外部库 以下是关于2D迷宫游戏的一些信息: 您可以使用箭头键在迷宫中导航。使用向上和向下箭头键选择菜单中的对象,例如: -->新游戏 负荷游戏 选择权 等等。。。谢谢你的帮助。您好。Lua本身不提供任何不属于ANSI C的库,ANSI C是该语言广泛可移植性的一部分 因此,您错过了键盘输入和图形等内容,也错过了可能被视为“简单”的操作,例如在目录中列出文件 最有可能的是,有一个库可以满足您的需要,如果没有,那么请记住Lua是编写C
等等。。。谢谢你的帮助。您好。Lua本身不提供任何不属于ANSI C的库,ANSI C是该语言广泛可移植性的一部分 因此,您错过了键盘输入和图形等内容,也错过了可能被视为“简单”的操作,例如在目录中列出文件 最有可能的是,有一个库可以满足您的需要,如果没有,那么请记住Lua是编写C端库最友好的语言之一 是一个很好的框架,它或多或少地将相当多的Lua扩展(包括相当抽象的SDL接口)与分发方法结合起来。如果您正在使用Lua开发游戏,这是一个很好的起点
编辑:如果你在Windows上使用LuaJIT,并且你可以使用全局键挂钩,那么我最近(2015年5月)开发了一个库来解决这个问题:有一些像诅咒一样的库可能会有所帮助;这里有一个。还有一个包含诅咒的库。我有一个答案,如果你使用linux,这段代码可以工作。只要在其他平台上尝试我的代码,看看它是否有效(如果您好奇的话)。它不会回显箭头键,也不会等到按enter键 如果这会导致一些问题,请修改一些我的代码 这可能对2D迷宫项目非常有用
function getch_unix() --This return key pressed instantly without waiting until user press enter key
os.execute("stty -echo raw")
os.execute("stty cbreak </dev/tty >/dev/tty 2>&1")
local key = io.read(3) --must read three letter for getArrowKey to work
os.execute("stty -cbreak </dev/tty >/dev/tty 2>&1");
return(key);
end
function getArrowKey()
function split(str)
local tmp = {}
for let in string.gmatch(str, ".") do
table.insert(tmp, let)
end
return tmp
end
--[[
A is up arrow
B is down arrow
D is left arrow
C is right arrow
]]
local key = split(getch_unix())
if string.lower(key[3]) == "a" then
return "up"
elseif string.lower(key[3]) == "b" then
return "down"
elseif string.lower(key[3]) == "d" then
return "left"
elseif string.lower(key[3]) == "c" then
return "right"
else
error("Invalid arrow key!")
end
end
function getch_unix()--此返回键立即按下,无需等待用户按enter键
操作系统执行(“stty-echo raw”)
执行(“stty cbreak/dev/tty 2>&1”)
本地键=io.read(3)--必须读取三个字母才能使getArrowKey工作
执行(“stty-cbreak/dev/tty 2>&1”);
返回(键);
结束
函数getArrowKey()
功能拆分(str)
本地tmp={}
对于let-in-string.gmatch(str,“.”)do
表.插入(tmp,let)
结束
返回tmp
结束
--[[
A是向上箭头
B是向下箭头
D是左箭头
C是右箭头
]]
本地键=拆分(getch_unix())
如果string.lower(键[3])==“a”,则
返回“向上”
elseif string.lower(键[3])==“b”然后
返回“向下”
elseif string.lower(键[3])==“d”然后
返回“左”
elseif string.lower(键[3])==“c”然后
返回“正确”
其他的
错误(“无效的箭头键!”)
结束
结束
当我使用getch_unix()函数进行测试时,我得到了这种方法。我在internet上找到了这个函数,它可以在不回声的情况下搜索一个按下的键,并且不等待您按下enter按钮
编辑:
Im还发现它有几个有用的功能,可用于您的用例。更多信息,请访问git。如果我的代码仍然不适合您的用例,它也会缩短您的代码。有
io.read()
。像这样使用b=io.read()。。。我去看看爱情。