2012-11-27 6 views
1

나는 Hardways를 통해 작업 중이며 각 룸이 자체 클래스이고 경로가되는 엔진 클래스가있는 텍스트 모험을하는 것을 연습합니다. 한 반에서 다른 반으로. 또한 여러 개의 파일이 있어야합니다.클래스가 다른 클래스를 호출하는 엔진에 데이터를 보내도록하십시오.

현재 사용중인 코드를 사용하면 클래스 또는 메서드 외부에서 엔진을 사용할 수 있지만 세 번째 클래스에서 Engine 클래스를 호출하면 팔콘 (클래스 이름)이 unitialized라는 메시지가 나타납니다.

저는 스타 워즈에서 게임을 기반으로하고 있으며, 다른 방법으로 문제에 접근하고 있음에도 불구하고 제공 할 수있는 도움에 대해 대단히 감사합니다.

runner.rb :

module Motor 
     def self.runner(class_to_use, method_to_use = nil) 
     if method_to_use.nil? == false 
      room = Object.const_get(class_to_use).new 
      next_room.method(method_to_use).call() 
     else 
      room = Object.const_get(class_to_use).new 
      puts room 
     end 
     end 
    end 

map.rb require_relative '러너' require_relative '문자'

class Falcon 

     def luke 
     puts "It works!" 
     end 

     def obi_wan 
     puts "this is just a test" 
     end 
    end 

characters.rb

class Characters 

     include Motor 

     puts "You can play as Luke Skywalker or Obi-wan Kenobi" 
     puts "Which would you like?" 
     character = gets.chomp() 

     if character == "Luke Skywalker" 
      puts "The Force is strong with this one." 
      Motor.runner(:Falcon, :luke) 
     elsif character == "Obi Wan Kenobi" 
      puts "It's been a long time old man." 
      Motor.runner(:Falcon, :obi_wan) 
     else 
      puts "I have no idea what you're saying." 
     end 
    end 

답변

0

아마도 올바른 방향으로 가고 있지 않을 것입니다. 이 모듈이 필요하지 않으므로 Character 클래스 내부에서 putsget 호출을해서는 안됩니다. 프로그래밍에 대해 얼마나 많이 알고 있는지는 모르지만이 솔루션은 연결 목록 (각 방이 다음을 알 수 있도록)을 작성하고이 목록에서 탐색하는 재귀와 같이 기본적인 데이터 구조 지식을 포함합니다. 그런 다음 문자

class Room 
    attr_accessor :description, :next_room 

    def initialize(description, next_room) 
     @description = description 
     @next_room = next_room 
    end 

end 

:

class Character 
    attr_accessor :title 

    def initialize(title) 
     @title = title 
    end 

end 

는 그런 다음지도를 구축 할 것입니다 :

첫 번째는 Room 기본 클래스를 만들

first_room = Room.new('Some room', Room.new('Golden Room', Room.new('Black room', nil))) 

을 그리고 당신은 다른 클래스를 만들어야합니다 명령 줄에서 읽고 Character을 이동합니다. 방.

0

characters.rb

require 'map.rb' 
관련 문제