我正在尝试制作一个小游戏,您可以从一个房间到另一个房间,但是当我尝试返回下一个房间的值而不是我想要的字符串时,我得到的东西看起来像这样:
#<Roseroom:0x007fe40984c778>
代替
"skullroom"
无论我使用 $global 变量还是尝试返回“字符串”,都会发生这种情况
也许我完全错了,所以如果你有任何建议也将不胜感激。
这是我的代码,问题在于 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
谢谢!