Exemplo n.º 1
0
        public void ChangePosition(Piece piece, ChessPoint newPosition)
        {
            if (ReferenceEquals(piece, null))
            {
                throw new ArgumentNullException(nameof(piece));
            }

            if (ReferenceEquals(newPosition, null))
            {
                throw new ArgumentNullException(nameof(newPosition));
            }

            var oldCoordinates = new MappedCoordinates(piece.Coordinate);
            var newCoordinates = new MappedCoordinates(newPosition);

            if (!ReferenceEquals(_map[newCoordinates.X][newCoordinates.Y], null))
            {
                throw new BusyCellException("Can't change piece position: the cell with coodinates " +
                                            $"{newPosition.Letter}{newPosition.Number} ({newCoordinates.X}, {newCoordinates.Y}) is busy.");
            }

            _map[newCoordinates.X][newCoordinates.Y] = piece;
            _map[oldCoordinates.X][oldCoordinates.Y] = null;

            piece.Coordinate.Letter = newPosition.Letter;
            piece.Coordinate.Number = newPosition.Number;
        }
Exemplo n.º 2
0
        public void RemovePiece(Piece piece)
        {
            if (ReferenceEquals(piece, null))
            {
                throw new ArgumentNullException(nameof(piece));
            }

            var coordinates = new MappedCoordinates(piece.Coordinate);

            _map[coordinates.X][coordinates.Y] = null;
        }
Exemplo n.º 3
0
        public void AddPiece(Piece piece)
        {
            if (ReferenceEquals(piece, null))
            {
                throw new ArgumentNullException(nameof(piece));
            }

            var coordinates = new MappedCoordinates(piece.Coordinate);

            if (!ReferenceEquals(_map[coordinates.X][coordinates.Y], null))
            {
                throw new BusyCellException("Can't add piece to piecemap: the cell with coodinates " +
                                            $"{piece.Coordinate.Letter}{piece.Coordinate.Number} ({coordinates.X}, {coordinates.Y}) is busy.");
            }

            _map[coordinates.X][coordinates.Y] = piece;
        }
Exemplo n.º 4
0
        public Piece GetPiece(ChessPoint cell)
        {
            var mapCoordinates = new MappedCoordinates(cell);

            return(_map[mapCoordinates.X][mapCoordinates.Y]);
        }