If statement 在Lua中跳过其他项
我开始在Lua从事一个小游戏开发项目,我的代码中的这部分遇到了问题:If statement 在Lua中跳过其他项,if-statement,lua,If Statement,Lua,我开始在Lua从事一个小游戏开发项目,我的代码中的这部分遇到了问题: if genrel == RPG and langl == BASIC and topicl == WAR then review = math.random(2, 5) review2 = math.random(2, 5) review3 = math.random(2, 3) money = money + 300 print("Yo
if genrel == RPG and langl == BASIC and topicl == WAR then
review = math.random(2, 5)
review2 = math.random(2, 5)
review3 = math.random(2, 3)
money = money + 300
print("You have earned a total of $300 dollars from your game. Overall not many people enjoyed the game.")
elseif genrel == RPG and langl == BASIC and topicl == "WESTERN" then
review = math.random(7, 9)
review2 = math.random(4, 9)
review3 = math.random(5, 8)
money = money + 400
print("You have earned a total of $300 dollars from your game. The game recieved mixed reviews.")
topicl、langl和genrel在代码的前面定义。
例如:
所有内容都已定义,但当我运行代码时,输出的随机数是if下的第一个随机数,无论我输入了什么。这可能很难理解,所以这里是我的完整代码。
小结:程序通过确定类型、主题和编码语言来决定显示哪些随机数。它不按类型、主题和编码语言选择数字,而是简单地使用第一个if语句。在代码的早期,您有以下内容:
if genreChoice == 'ACTION' then
genre = "[ACTION]"
genrel = ACTION
elseif genreChoice == 'RPG' then
genre = "[RPG]"
genrel = RPG
elseif genreChoice == 'SIM' then
genre = "[SIM]"
genrel = SIM
end
您将变量ACTION
、RPG
和SIM
的值分配给genrel
,但这些变量似乎没有在任何地方定义,因此它们的值为nil
。换句话说,当您执行以下操作时:
genrel = ACTION
与您所做的相同:
genrel = nil
Lorenzo介绍了代码执行不符合预期的主要原因。第二个问题是,您正在检查播放机输入的字符串,但没有规范化该情况 考虑一下如果玩家输入类似于
WeSTErn
的内容会发生什么。这与WESTERN
不同——变量设置不正确,程序再次输出错误的结果
通过使用string.upper
或string.lower
,或者使用不同的数据类型,例如数字,在比较之前对播放器输入进行规范化。在处理数据时,并非所有内容都必须表示为字符串
我是否应该像克里斯特·安德森(Krister Andersson)所说的那样,在if语句中的每一项都加上引号
仅当您希望这些变量包含字符串类型时。您也可以为它们分配唯一的编号,以便在它们之间进行标识。比如说:
local ACTION, RPG, SIM = 1, 2, 3
local JAVA, BASIC = 1, 2, 3
local WAR, WESTERN, BLOCKS = 1, 2, 3
-- etc.
最后,你真的应该考虑破解你的程序——这就是为什么函数被发明的原因。不是第一个<代码> > < < /> >语句中没有引用“代码>战争<代码>的问题吗?我已经试过引用过它们,但这可能是问题所在。我会用“”或“”引用它们吗?Lua中的字符串文本可以用单引号或双引号引用,这是一样的。你应该:第1章、第2章、第3章并不长,在你做任何严肃的程序之前,你必须很好地了解它们。我添加了引号,随机数显示为零。访问未定义的全局变量(如RPG或WAR)真的很烦人。我强烈建议使用lint工具(LuaInspect)或元表技巧(strict.lua)更快地检测这些错误。我想一开始我是这样做的,但是把它去掉了。我现在就试试。我是否应该像克里斯特·安德森(Krister Andersson)所说的那样,在if语句中的每一项都加上引号?编辑:等等,我如何准确定义这些变量?
local ACTION, RPG, SIM = 1, 2, 3
local JAVA, BASIC = 1, 2, 3
local WAR, WESTERN, BLOCKS = 1, 2, 3
-- etc.