-1
我試圖做一個小遊戲,你從一個房間到另一個房間,但是當我嘗試返回下一個房間的值而不是字符串時,我打算獲得一些東西看起來像這樣:從班級返回值,並獲得莫名其妙的結果
#<Roseroom:0x007fe40984c778>
,而不是
"skullroom"
出現這種情況我是否使用$全局變量或者嘗試返回「字符串」
也許我會約THI這是完全錯誤的,所以如果你有任何建議,也將被讚賞。
這裏是我的代碼,問題是類Roseroom沒有將「skullroom」發送回地圖類(這是跑步者)。
$next_room = ''
class Engine
def initialize(stage)
@stage = stage
puts "succesfully initialized game"
@map = Map.new(@stage)
end
end
class Map
def initialize(start)
@start = start
@rooms = {"roseroom" => method(:enterRose),
"skullroom" => method(:enterSkull)
}
runner(@rooms, @start)
end
def runner(map, start)
$next_room = start
while true
room = map[$next_room]
puts $next_room
$next_room = room.call()
#method(:enterSkull).call() #This work if I call it directly
end
end
def enterRose()
@roseroom = Roseroom.new
end
def enterSkull()
@skullroom = Skullroom.new
end
end
class Roseroom
def initialize
puts "succesfully initialized roseroom"
#$next_room = "skullroom"
return "skullroom"
end
def exit
end
end
class Skullroom
def initialize
puts "succesfully initialized skullroom"
Process.exit(1)
end
end
game = Engine.new("roseroom")
我在這裏有它的鍵盤是否有幫助: http://codepad.org/AlpkRIGb
謝謝!
「我試圖做一個小遊戲,你從一個房間到另一個房間」,你能否詳細說明這個遊戲是如何工作的,我會試着給你一些關於結構的指導。 –