Exemple #1
0
        public GameController(ISolitaireGameModel gameModel, IGameViewFactory gameViewFactory)
        {
            if (gameModel == null)
            {
                throw new ArgumentNullException(nameof(gameModel));
            }

            if (gameViewFactory == null)
            {
                throw new ArgumentNullException(nameof(gameViewFactory));
            }

            _gameModel = gameModel;
            _gameView  = gameViewFactory.Create(this, gameModel);
        }
        public ConsoleGameView(
            IGameController gameController,
            ISolitaireGameModel gameModel,
            IStringViewProvider <Card> cardStringViewProvider,
            IStringViewProvider <CardSuit> cardSuitStringViewProvider)
        {
            if (gameController == null)
            {
                throw new ArgumentNullException(nameof(gameController));
            }

            if (gameModel == null)
            {
                throw new ArgumentNullException(nameof(gameModel));
            }

            if (cardStringViewProvider == null)
            {
                throw new ArgumentNullException(nameof(cardStringViewProvider));
            }

            if (cardSuitStringViewProvider == null)
            {
                throw new ArgumentNullException(nameof(cardSuitStringViewProvider));
            }

            _gameController             = gameController;
            _gameModel                  = gameModel;
            _cardStringViewProvider     = cardStringViewProvider;
            _cardSuitStringViewProvider = cardSuitStringViewProvider;

            _gameModel.Subscribe((IObserver <GameStarted>) this);
            _gameModel.Subscribe((IObserver <StepDone>) this);
            _gameModel.Subscribe((IObserver <GameEnded>) this);

            _gameActions = new List <GameAction>
            {
                new GameAction
                {
                    Action = MoveCardToResultPileAction,
                    Name   = "Переместить карту в результирующую стопку"
                },
                new GameAction
                {
                    Action = MoveCardToAnotherPileAction,
                    Name   = "Переместить карту из одной стопки в другую"
                },
                new GameAction
                {
                    Action = MoveSixCardToResultPile,
                    Name   = "Переместить шестерку из середины стопки в результирующую стопку"
                },
                new GameAction
                {
                    Action = EndGameAction,
                    Name   = "Завершить игру"
                }
            };

            Console.OutputEncoding = Encoding.UTF8;
        }
Exemple #3
0
 public IGameView Create(IGameController gameController, ISolitaireGameModel gameModel) =>
 new ConsoleGameView(gameController, gameModel, _serviceProvider.GetRequiredService <IStringViewProvider <Card> >(),
                     _serviceProvider.GetRequiredService <IStringViewProvider <CardSuit> >());