Ruby hangman游戏 - 覆盖数组的问题(直到循环)

时间:2017-03-09 18:19:09

标签: arrays ruby loops

我正在尝试用Ruby创建一个刽子手游戏。一切都很顺利,但现在我被卡住了。

我有这段代码:

def feedback
  feedback = Array.new(@word.length, "-")
  correct_letters = []
  wrong_letters = []

  word_array = @word.split("")

  word_array.each_with_index do |letter, index|
    if letter == @input
      feedback[index] = letter
      correct_letters << letter
    end
  end
end

它处于循环中:

until @@count == 0 || win?
  guess_whole_word
  user_input
  user_input_valid?
  feedback
  show_count
end

每次执行until循环时,都会重新创建数组,以便添加到数组中的值消失。我想在数组中添加正确和错误的字母,并在反馈中添加正确的字母,以反映用户猜测创建单词的字母。

1 个答案:

答案 0 :(得分:2)

每次执行时,feedback函数都会实例化新的本地数组变量。

如果您希望在执行方法后访问这些变量,您可以:

  • 作为该方法的结果返回它们,并在until循环部分中使用它们:

    def feedback
      feedback = Array.new(@word.length, "-")
      correct_letters = []
      wrong_letters = []
    
      word_array = @word.split("")
    
      word_array.each_with_index do |letter, index|
        if letter == @input
          feedback[index] = letter
          correct_letters << letter
        end
      end
    
      return [feedback, correct_letters, wrong_letters]
    end
    
  • 将变量声明为类的实例变量,以便您可以在feedback方法之外访问它们,但您可能需要更改feedback实现。

    < / LI>