我瞭解班級是如何工作的,以及如何製作班級,但第二個額外功勞表示要在兩個不同檔案中創建兩個班級的班級。學習Ruby the Hardway前。 42. 2個檔案中的2個班級
我嘗試不同的東西,但我無法弄清楚如何使它工作...
我不知道如果我沒有在正確的地方尋找,但我無法找到對任何幫助,也沒有找到任何解決辦法...
如果有人可以幫助我上,那將是非常讚賞:)
這裏是exercice:http://ruby.learncodethehardway.org/book/ex42.html
我已經試了遠:
map.rb
class Map
with all the methods in here (death(), central_corridor(), etc.)
然後
engine.rb
class Engine
require './map.rb'
def initialize(start)
@quips = [
"You died. You kinda suck at this.",
"Nice job, you died... jackass.",
"Suck a luser."
]
@start = start
puts "in init @start = " + @start.inspect
end
def prompt()
print "> "
end
def play()
puts "@start => " + @start.inspect
@next_room = @start
while true
puts "\n--------"
room = method(@next_room)
@next_room = room.call()
end
end
end
a_game = Engine.new(:central_corridor)
a_game.play()
所以基本上我所做的就是用於遊戲中的「動作」(房間,死亡等方法..並把他們在地圖類地圖。 rb,然後在engine.rb中調用,其中我有我的類引擎與「一般」方法/變量,如提示,播放,啓動。
我得到的錯誤是
engine.rb:24:in `method': undefined method `central_corridor' for class `Engine'
我明白它的意思紅寶石試圖找到在類發動機的方法「central_corridor」,但它是在類圖中map.rb我想不通出了什麼做,要麼是一些可變的修改或只是一些東西要添加... :(
你可以[編輯]你的文章,包括你試過的東西以及你從嘗試中得到的錯誤消息嗎? – sarnold
不要在引擎類中'需要'映射類*,而是在類聲明之前。但是'Engine'實例方法(通過'Engine'聲明中的'def'定義)需要執行一個'Engine'的實例。 –
你是什麼意思需要一個引擎的實例來執行?在2個文件中有2個類的練習的全部重點是在引擎中使用一個地圖的實例,我認爲... – Jauny