Lua调用循环相同的函数

我在做一个D&D项目,这是状态部分。我想调用stats1函数来重新投掷。有人能帮我吗?

function stats1()

力量=math.random(1,20)
敏捷=math.random(1,20)
体质=math.random(1,20)
智力=math.random(1,20)
感知=math.random(1,20)
魅力=math.random(1,20)
  print("           Stats            ")
  print("--------------------------")
  print("|    力量   |     "..Strength.."      |")
  print("--------------------------")
  print("|    敏捷   |     "..Dexterity.."      |")
  print("--------------------------")
  print("|    体质   |     "..Constitution.."      |")
  print("--------------------------")
  print("|    智力   |     "..Intelligence.."      |")
  print("--------------------------")
  print("|    感知   |     "..Wisdom.."      |")
  print("--------------------------")
  print("|    魅力   |     "..Charisma.."      |")
  print("--------------------------")
  print("重新投掷状态吗?")
  reroll = io.read
  if reroll == "y" or "Y" then
    for Re_Roll = true
      stats()
      if reroll == "n" or "N" then
  Re_Roll = false
  end
end
  else
      print("谢谢您的文化")
    end

如果可以,请提供反馈。谢谢!

点赞
用户7396148
用户7396148

你的函数中有一些错误

  1. reroll = io.read。这将函数io.read分配给了reroll,而不是读取的值。你需要调用io.read()并将结果值赋给reroll

    reroll = io.read()
    

    就像评论中所说的@EgorSkriptunoff。

  2. 这种类型的语句总是true:

    if reroll == "y" or "Y" then
    

    你需要将两个字符串都与reroll进行比较,否则你将计算"Y"的truthy值,它总是为真。

  3. for Re_Roll = true会生成错误,因为它不是完整的for循环语句。似乎你在这里不打算使用for,所以建议将其删除。

  4. 除了第1点中的问题外,你的"N"语句嵌套在第一个if语句中,这意味着它永远不会为真。

  5. 你的else语句出现在if语句的结尾,这在Lua中是错误的,并会引发异常。


你的代码没有尝试创建一个循环以允许重新投掷。我建议阅读Lua文档,特别是建议阅读Programming in Lua以帮助更好地理解这门语言。

以下是带有修正说明的代码,以及一个while循环以允许重掷。

function stats()
  Strength = math.random(1, 20)
  Dexterity = math.random(1, 20)
  Constitution = math.random(1, 20)
  Intelligence = math.random(1, 20)
  Wisdom = math.random(1, 20)
  Charisma = math.random(1, 20)

  print("           Stats            ")
  print("--------------------------")
  print("|  Strength  |     " .. Strength .. "      |")
  print("--------------------------")
  print("| Dexterity  |     " .. Dexterity .. "      |")
  print("--------------------------")
  print("|Constitution|     " .. Constitution .. "      |")
  print("--------------------------")
  print("|Intelligence|     " .. Intelligence .. "      |")
  print("--------------------------")
  print("|   Wisdom   |     "..Wisdom .. "      |")
  print("--------------------------")
  print("|  Charisma  |     " .. Charisma .. "      |")
  print("--------------------------")
end

-- 这将运行stat函数,然后询问用户是否要重新投掷。
stats()
while(true) do
  print("Reroll stats" .. (Re_Roll and " again" or "") .. "?")
  reroll = io.read()
  if reroll == "y" or reroll == "Y" then
    Re_Roll = true
    stats()
  elseif reroll == "n" or reroll == "N" then
    if not Re_Roll then
      print("thanks for being cultured")
    end
    Re_Roll = false
    break
  end
end
2020-01-13 18:51:59