방에서 방으로가는 작은 게임을 만들려고합니다. 그러나 내가 의도 한 문자열 대신 다음 방의 값을 반환하려고 할 때 뭔가를 얻습니다. 그것은 다음과 같습니다클래스에서 값을 반환하고 설명 할 수없는 결과를 얻습니다.
#<Roseroom:0x007fe40984c778>
대신
"skullroom"
나는 $ 전역 변수를 사용하거나 아마도 내가 생에 대한거야 "문자열"
를 반환하려고 여부를이 문제가 발생 완전히 잘못된 것입니다. 그렇다면 감사할만한 제안이 있다면.
여기 내 코드입니다. 문제는 클래스 Roseroom이 "스컬 룸"을지도 클래스 (주자)에게 다시 보내지 않는 것입니다. http://codepad.org/AlpkRIGb
감사 : 그 도움이된다면
$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")
나는 codepad에 여기있다!
"방에서 방으로가는 작은 게임을 만들려고합니다."이 게임의 작동 방식을 자세히 설명해 주시면 구조에 대해 알려 드리겠습니다. –