Я делаю карточную игру в рубине.
У меня есть класс Game, в котором есть массив объектов Player.
array_of_players = Array[
Player.new("Ben"),
Player.new("Adam"),
Player.new("Peter"),
Player.new("Fred"),
]
my_game = Game.new(array_of_players)
puts my_game.players[2].name #=> Peter
Каждый игрок также имеет доступ к Игре, так что он может получить доступ к важным частям игры, как, например,
self.game.last_card_dealt
У каждого игрока также есть карты (Player.cards), и я хочу убедиться, что игроки не могут получить доступ к картам друг друга. Однако игре необходим доступ к карточкам, поэтому я не думаю, что использование private
целесообразно, а игрокам нужен доступ к некоторой информации друг друга, поэтому я не думаю, что это будет private
либо ...
По сути, я хочу, чтобы они работали.
self.cards #where self is a Player object
self.players[0].cards #where self is the Game
self.game.players[0].name #where self is a Player object
И это не получится:
self.hand.players[0].cards #=> Nice try sucker! Cheating is for losers.
Как обрабатываются более сложные разрешения, подобные этому?
Спасибо.