lua вызов той же функции, что и цикл - PullRequest
0 голосов
/ 13 января 2020

Я делаю проект D & D, и это часть статистики. Я хочу вызвать функцию stats1 для повторного использования. Может кто-нибудь мне помочь?

function stats1()


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("--------------------------")
  print("Reroll stats?")
  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("thanks for being cultured")
    end

Буду рад обратной связи, если сможете. Спасибо!

1 Ответ

2 голосов
/ 13 января 2020

В вашей функции есть ряд ошибок

  1. reroll = io.read. Это присваивает функции io.read значение reroll, а не значение прочитанного значения. вам нужно вызвать io.read и установить reroll в качестве полученного значения.

    reroll = io.read()
    

    , как указано @EgorSkriptunoff в комментариях.

  2. этот тип утверждение всегда будет верным:

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

    вам нужно сравнить обе строки с reroll, или вы оцените истинное значение "Y", которое всегда верно.

  3. for Re_Roll = true приведет к ошибке, поскольку она не является полной для оператора l oop. похоже, вы не намеревались использовать for здесь, поэтому я предлагаю удалить его.

  4. в дополнение к проблеме из пункта 1, ваше заявление "N" вложено в ваш первый Если оператор if, это означает, что он никогда не будет верным.

  5. ваш оператор else идет после окончания вашего оператора if, это неправильно в Lua и вызовет исключение.


Ваш код не пытается сделать так, чтобы al oop разрешил повторное выполнение. Я также предлагаю прочитать документацию lua, и я особенно рекомендую прочитать Программирование на Lua, чтобы помочь лучше понять язык.

Вот код с отмеченными исправлениями, и некоторое время l oop, чтобы разрешить повторные выпуски.

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

-- This will run the stat function then ask the user if they want to reroll.
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...