我对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"它不打印我的库存,而是打印"你离开了洞穴,"但实际上并没有离开。
答案 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