我开始在Lua开发一个小型的Game-Dev项目,但我的代码部分出现问题:
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,在代码的前面定义。 例如:
topicChoice = io.read()
if topicChoice == 'War' then
topic = "[War]"
topicl = WAR
progLang = io.read()
if progLang == 'Java' then
lang = "[JAVA]"
langl = JAVA
genreChoice = io.read()
if genreChoice == 'ACTION' then
genre = "[ACTION]"
genrel = ACTION
一切都已定义,但是当我运行代码时,输出的随机数是if下的第一个,无论我放入什么。这可能很难理解,所以这是我的完整代码。 http://pastebin.com/XS3aEVFS
摘要:程序通过确定类型,主题和编码语言是什么来决定显示哪些随机数。它不是按流派,主题和编码语言选择数字,而只是使用第一个if语句。
答案 0 :(得分:2)
在代码的早期,你有这个:
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
并且您为genrel
分配了变量ACTION
,RPG
和SIM
的值,但这些变量似乎没有在任何地方定义,因此他们的值为nil
。换句话说,执行时:
genrel = ACTION
就像你做的那样:
genrel = nil
答案 1 :(得分:1)
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.
最后请注意,你应该考虑分解你的程序 - 这就是函数发明的原因。