クラスの仕組みと作成方法は理解していますが、演習の 2 番目の追加クレジットでは、2 つの異なるファイルで 2 つのクラスのバージョンを作成するように指示されています。
いろいろやってみたのですが、どうすればいいのかわかりません...
適切な場所を検索していないかどうかはわかりませんが、それに関するヘルプも解決策も見つかりません...
誰かがそれについて私を助けることができれば、それは大歓迎です:)
ここに演習があります: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()
だから基本的に私がしたことは、ゲームの「アクション」(部屋、死など)に使用されるメソッドを取得し、それらをmap.rbのクラスMapに入れ、次にクラスがあるengine.rbで呼び出すことですプロンプト、再生、開始などの「一般的な」メソッド/変数を持つエンジン。
私が得るエラーは
engine.rb:24:in `method': undefined method `central_corridor' for class `Engine'
ルビーがクラスエンジンでメソッド「central_corridor」を見つけようとすることを意味していることは理解していますが、それはmap.rbのクラスマップにあり、何をすべきかわかりません.変数の変更か、追加するものだけです. ... :(