Вложенность VS наследование - не догоняю - C#

Узнай цену своей работы

Формулировка задачи:

public class Game_class
{
    ...
    public Player_class player;
    public int Round{get;set;}
public class Player_class
{
    ...
    Game_class game111 = new Game_class();  //так по ходу тупо
    public int Method1()
    {
        return game111.Round;
    }
}
в классе Game_class говорю, что player - объект класса Player_class (он инициализируется и в конструкторе) в классе Player_class мне надо работать с полями класса Game_class(не статичными, а изменяющимися для данного объекта класса Game_class) прога:
...
Game_class game1 = new Game_class();
int var1 = game1.player.Method1()
Прога должна записать в var1 значение свойства Round именно того объекта game1, вложенным в кот. является наш объект player

Решение задачи: «Вложенность VS наследование - не догоняю»

textual
Листинг программы
class Program {
        static void Main(string[] args) {
            Game g = new Game();
 
            Player player1 = g.AddPlayer(new Player(g));
            Player player2 = g.AddPlayer(new Player(g));
            Player player3 = g.AddPlayer(new Player(g));
 
            Console.WriteLine(player2.GetID());
            Console.ReadKey();
 
            g.ResetGame();
        }
    }
 
    public class Player {
        private Game _game;
 
        public Player(Game game) {
            _game = game;
        }
 
        public void Die() { }
 
        public void ResetGame() {
            _game.ResetGame();
        }
 
        public int GetID() {
            return _game.GetID(this);
        }
    }
 
    public class Game {
 
        public Game() {
 
        }
 
        public Player AddPlayer(Player player) {
            _players.Add(player);
            return player;
        }
 
        private List<Player> _players = new List<Player>();
 
        private void KillAllPlayers() {
            for (int i = 0; i < _players.Count; i++) {
                _players[i].Die();
                _players.Remove(_players[i--]);
            }
        }
 
        public void ResetGame() {
            KillAllPlayers();
        }
 
        public int GetID(Player player) {
            return _players.IndexOf(player);
        }
 
    }

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы