Exemple #1
0
        public ValidationReport RunValidations()
        {
            Player currentPlayer = Properties.CurrentPlayer;

            CommandParser.PlayerMoves direction = Properties.Direction;
            Position testPosition = Position.CalculatePosition(currentPlayer.Position, direction);
            int      row          = testPosition.Row;
            int      col          = testPosition.Column;

            if (CollisionWithBorder(testPosition))
            {
                return(new ValidationReport(ValidationStatus.CollisionWithBorder, null, testPosition));
            }

            if (CollisionWithOneSelfTrail(currentPlayer, row, col))
            {
                return(new ValidationReport(ValidationStatus.CollisionWithOneSelfTrail, null, testPosition));
            }

            if (CollisionWithOtherPlayerTrail(row, col))
            {
                return(new ValidationReport(ValidationStatus.CollisionWithOtherPlayerTrail, null, testPosition));
            }

            if (CollisionWithOtherPlayer(row, col))
            {
                Player crashPlayer = Properties.Matrix[testPosition.Row, testPosition.Column].Player;
                return(new ValidationReport(ValidationStatus.CollisionWithOtherPlayer, crashPlayer, testPosition));
            }

            return(new ValidationReport(ValidationStatus.Ok, null, testPosition));
        }
Exemple #2
0
        private ValidationReport RunMovementValidations(Player currentPlayer, CommandParser.PlayerMoves direction)
        {
            ValidationProperties properties =
                new ValidationProperties(Players, Matrix, currentPlayer, direction, Rows, Columns);

            Validations validations = new Validations(properties);

            return(validations.RunValidations());
        }
Exemple #3
0
 public ValidationProperties(List <Player> players, Cell[,] matrix, Player currentPlayer, CommandParser.PlayerMoves direction, int matrixRows, int matrixColumns)
 {
     Players       = players;
     Matrix        = matrix;
     CurrentPlayer = currentPlayer;
     Direction     = direction;
     MatrixRows    = matrixRows;
     MatrixColumns = matrixColumns;
 }
Exemple #4
0
        private void AnalyzeAndMovePlayer(Player currentPlayer, CommandParser.PlayerMoves direction)
        {
            if (!currentPlayer.IsAlive)
            {
                return;
            }

            ValidationReport report = RunMovementValidations(currentPlayer, direction);

            if (report.Status != ValidationStatus.Ok)
            {
                ChooseAction(report, currentPlayer);
            }

            else
            {
                MovePlayer(currentPlayer, direction);
            }
        }
Exemple #5
0
        public static Position CalculatePosition(Position pos, CommandParser.PlayerMoves direction)
        {
            int row = pos.Row;
            int col = pos.Column;

            switch (direction)
            {
            case CommandParser.PlayerMoves.Up:
                return(new Position(row - 1, col));

            case CommandParser.PlayerMoves.Right:
                return(new Position(row, col + 1));

            case CommandParser.PlayerMoves.Down:
                return(new Position(row + 1, col));

            case CommandParser.PlayerMoves.Left:
                return(new Position(row, col - 1));

            default:
                return(null);
            }
        }
Exemple #6
0
 private void MovePlayer(Player currentPlayer, CommandParser.PlayerMoves direction)
 {
     DisableCurrentPlayerCell(currentPlayer.Position);
     currentPlayer.Position = Position.CalculatePosition(currentPlayer.Position, direction);
     UpdateTheMatrix(currentPlayer);
 }