Lua"或"声明问题

时间:2017-01-21 21:10:00

标签: lua

我对Lua很新,而且我正在做一个非常简单的基于文本的冒险活动,但它不会工作。我的代码如下:

while input ~= ("leave cave" or "leave") do
print("What do you want to do?")
input = io.read()

if input == "inspect" then 
        print("You are in a cave") 
    elseif input == "leave cave" or "leave" then
        print("You leave the cave")
    elseif input == "inv" then
        for i,v in pairs(inv) do
        print(i, v)
    end
  else
    print("You didn't write a valid command...")
  end
end

-- leave cave

input = ""
print("What do you want to do?")
input = io.read()
while input ~= "follow path" do 
if input == "inspect" then 
        print("You are at the base of a hill. There is a path.") 
    elseif input ==  "follow path" then
        print("You follow the path. There is a gate.") 
     elseif input == "inv" then
        for i,v in pairs(inv) do
        print(v)
        end
    else 
        print("That's not a valid command...")
    end 
end

我尝试做的就是拥有它,所以无论何时用户键入,或离开洞穴,它都会进入下一段(路径一),但是,当我键入"离开&#34 ;然后键入"检查"再说它"我在一个山洞里"而不是应该说什么说你离开了,你看到了一条道路。当我打字离开洞穴,然后进行检查时,它会发出垃圾邮件,而你正好在山脚下。有路径"一遍又一遍,无限期地。

当我输入" inv"它不打印我的库存,而是打印"你离开了洞穴,"但实际上并没有离开。

2 个答案:

答案 0 :(得分:3)

a or b无法创建一个值,即a或b" - 那太复杂了。

事实上,如果你要求它在两个字符串之间进行选择,它只会选择第一个字符串:

print("leave cave" or "leave") --> leave cave

or仅用于布尔值 - 您必须将其组合在多个完整条件上:

while (input ~= "leave cave") and (input ~= "leave") do

在这种情况下,repeat ....... until <condition>循环可能会更好地为您服务:

repeat
    print("What do you want to do?")
    input = io.read()

    -- <do stuff>
until input == "leave" or input == "leave cave"

答案 1 :(得分:0)

虽然y.com无法完成如此复杂的操作,但可以使用一些hacky metatable代码自行重新创建效果。

请注意我不建议在任何严肃的专业或商业程序中使用此代码,或者根本不是,此代码效率低且不必要,但它是一段有趣的代码做你正在寻找的东西。这只是一种尝试Lua力量的有趣方式。

or