Вы можете передать класс как параметр как обычно:
def use_class(myclass)
x = myclass.new "test"
x.read_name
end
use_class(City)
# returned -> ' You are in a city called "test".'
Однако ваша ошибка не связана с этим. По сути, вы пытаетесь использовать объект game
в рамках класса, но он там еще не существует.
Чтобы передать ссылку на экземпляр Game в город класса, вы можете сделать что-то вроде:
@city = City.new(city_name, self)
и измените конструктор City на
def initialize(city_name, game)
@city_name = city_name
@game = game
end
Тогда City # intro будет иметь:
@game.play(@street, :enter, @game)
Вероятно, будут другие ошибки, поскольку @street
еще не определен в Сити, но это другой вопрос.