ChessDotNet.Variants.Atomic.AtomicChessGame.ApplyMove C# (CSharp) Method

ApplyMove() public method

public ApplyMove ( Move move, bool alreadyValidated ) : MoveType
move Move
alreadyValidated bool
return MoveType
        public override MoveType ApplyMove(Move move, bool alreadyValidated)
        {
            MoveType type = base.ApplyMove(move, alreadyValidated);
            if (!type.HasFlag(MoveType.Capture))
                return type;
            int[][] surroundingSquares = new int[][] { new int[] { 1, 0 }, new int[] { 1, 1 }, new int[] { 0, 1 }, new int[] { -1, -1 },
                                                       new int[] { -1, 0 }, new int[] { 0, -1 }, new int[] { -1, 1 }, new int[] { 1, -1 } };
            SetPieceAt(move.NewPosition.File, move.NewPosition.Rank, null);
            foreach (int[] surroundingSquaresDistance in surroundingSquares)
            {
                File f = move.NewPosition.File + surroundingSquaresDistance[0];
                int r = move.NewPosition.Rank + surroundingSquaresDistance[1];
                if (f < 0 || (int)f >= BoardWidth || r < 1 || r > BoardHeight)
                    continue;
                if (!(GetPieceAt(f, r) is Pawn))
                {
                    SetPieceAt(f, r, null);
                }
            }

            if (CanBlackCastleKingSide && GetPieceAt(File.H, 8) == null)
            {
                CanBlackCastleKingSide = false;
            }
            if (CanBlackCastleQueenSide && GetPieceAt(File.A, 8) == null)
            {
                CanBlackCastleQueenSide = false;
            }
            if (CanWhiteCastleKingSide && GetPieceAt(File.H, 1) == null)
            {
                CanWhiteCastleKingSide = false;
            }
            if (CanWhiteCastleQueenSide && GetPieceAt(File.A, 1) == null)
            {
                CanWhiteCastleQueenSide = false;
            }

            return type;
        }

Usage Example

        protected virtual bool WouldBeSuicide(Move move, Player player)
        {
            ChessUtilities.ThrowIfNull(move, nameof(move));
            var copy = new AtomicChessGame(Board, player);

            copy.ApplyMove(move, true);
            bool ownKingIsGone = copy.KingIsGone(player);

            if (ownKingIsGone)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
All Usage Examples Of ChessDotNet.Variants.Atomic.AtomicChessGame::ApplyMove