Exemplo n.º 1
0
 public Game(IOutput output, IBoard board, ICoordinateParser coordinateParser, IValidator validator)
 {
     _output           = output;
     _board            = board;
     _coordinateParser = coordinateParser;
     _validator        = validator;
     GameStatus        = GameStatus.InProgress;
 }
Exemplo n.º 2
0
 public GameLogic(ISettingsChecker settingsChecker, IGridBuilder gridBuilder, ICoordinateParser coordinateParser)
 {
     _settingsChecker  = settingsChecker;
     _gridBuilder      = gridBuilder;
     _coordinateParser = coordinateParser;
 }
 public CoordinatesParser(ICoordinateParser coordinateParser, ILogger logger)
 {
     this.coordinateParser = coordinateParser ?? throw new ArgumentNullException(nameof(coordinateParser));
     this.logger           = logger;
 }
 public CoordinatesCalculatorController(ICoordinateParser coordinateParser)
 {
     this.coordinateParser = coordinateParser ?? throw new ArgumentNullException(nameof(coordinateParser));
 }
Exemplo n.º 5
0
        public static void TakeTurn(Player player, IBoard board, IOutput output, Game game, IValidator validator, ICoordinateParser coordinateParser)
        {
            do
            {
                output.OutputText(string.Format(Resources.TakeTurn, player.Name));
                var playerMove = player.InputText();
                if (game.ExitIntent(playerMove))
                {
                    break;
                }

                Coordinate coordinate;
                if (validator.IsValidFormat(playerMove))
                {
                    coordinate = coordinateParser.GetNewCoordinate(playerMove);
                }
                else
                {
                    output.OutputText(Resources.IncorrectFormat);
                    continue;
                }

                if (validator.IsValidCoordinate(coordinate, board))
                {
                    if (board.CellIsAvailable(coordinate))
                    {
                        game.RunPlayerMove(player, coordinate);
                        break;
                    }
                    output.OutputText(string.Format(Resources.CellUnavailable));
                }
                else
                {
                    output.OutputText(string.Format(Resources.OutsideOfBounds));
                }
            } while (true);
        }