【问题标题】:Lua 2nd nested if statement is ignoredLua第二个嵌套if语句被忽略
【发布时间】:2017-11-05 13:33:21
【问题描述】:

我正在为我的作业编写井字游戏,但我被嵌套的 if 语句卡住了。下面附上我的部分代码:

if name[1] == "AI" then 
     print("test string")
     playerId = 1
     if level == 1 or level == 2 then
        print("AI lvl 1/2")
        easy()
     elseif level == 3 then
        print("AI lvl 3")
        hard()
     end
elseif name[1] == "player" then
    print("test string2")
    Runtime:addEventListener("touch", fill)
end

执行此操作时,测试字符串打印在控制台上,并且 playerId = 1,但在第二个 if 语句中被完全忽略。甚至不在控制台上打印。 有人可以帮我解决吗?或者告诉我我的代码有什么问题。 谢谢

【问题讨论】:

  • test string2 被打印,而 name[1] == "player"
  • 检查level的值是多少。听起来好像不是 1、2 或 3。你从哪里得到它?如果您发布定义 level 的代码,我们或许可以为您提供更具体的帮助。
  • 本场景中:local level = composer.getVariable("level"),在难度级别场景中,composer.setVariable("level", "1"),level代表难度级别,只有1 ,2,3
  • 在上面代码的 playerId =1 下添加 print("level"..level) 后,当我选择相关级别时,它会打印级别 1/2/3。

标签: if-statement lua


【解决方案1】:

添加类似print(level, type(level)) 的内容以查看level 是什么。请记住,当您想要进行一些算术运算或字符串连接时,lua 可以将 '123' 之类的字符串转换为数字,反之亦然,但是您不能将字符串与数字进行比较:123 == '123' 将返回 false

所以,如果level 是一个字符串,请将代码中的123 替换为'1''2''3',或者将level 转换为数字:level = tonumber(level)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2015-08-13
    • 2014-03-04
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多