我正在创建一个刽子手游戏,此时只会在pry / terminal中播放。我有4个文件:
words_array.rb - 大字数组
words.rb- word class
game.rb - 游戏类
main.rb - 使用单词/游戏中的方法并玩游戏
在我的main.rb文件中,我调用了一个新游戏。它需要一组单词的arg。
require 'pry'
require_relative ('./words_array.rb')
require_relative ('./word.rb')
require_relative ('./game.rb')
game = Game.new(some_words)
game.start_game
while !@game.over?
puts "Please guess a letter"
user_letter = gets.chomp
game.guess(user_letter)
if game.over?
game.over_message
end
game.render
end
binding.pry
我的问题是,在要求我的所有文件都在pry中,并且它们似乎都成功加载(包括words_array.rb)我遇到错误,当它击中/ game = Game.new(some_words)/告诉我some_words未定义
main.rb:7:in `<main>': undefined local variable or method `some_words' for main:Object (NameError)
some_words是words_array.rb文件中的单词数组(也是唯一的单词),它已成功加载到pry中。为什么它不能识别它,或者除了要求它在pry中,如果我想在main.rb文件中使用它,我还应该做些什么?
谢谢!
答案 0 :(得分:1)
您收到此错误是因为some_words
超出了您调用它的程序的范围。仅仅因为您需要words_array.rb
文件并不意味着some_words
变量在范围内且可访问。您应该发布words_array.rb
文件的开头,显示您如何定义它。只要留下巨大的单词列表。
您在文件中使用模块吗?
Module GameWords
WORDS = %w(dog cat chair ....
end
然后当你require 'words_array'
时,你可以通过调用来获取数组:
game = Game.new(GameWords::WORDS)
# returns ['dog', 'cat', 'chair'....
你可以使用常量做一个更简单的形式:
你的words_array.rb可以是:
WORDS = %w(dog cat chair ....
你可以像以下一样使用它:
game = Game.new(WORDS)