Ejemplo n.º 1
0
        public void AddPawnMove(int fromPosition, int targetPosition, MoveFlags move, List <Move> moves)
        {
            Piece takenPiece;
            int   row = BoardPosition.PositionRow(targetPosition);

            if ((move & MoveFlags.ENPASSANT) == MoveFlags.ENPASSANT)
            {
                takenPiece = Piece.PAWN;
            }
            else
            {
                takenPiece = GetPiece(targetPosition);
            }

            // check if the pawn is going to move into a promotion row.
            // we don't check the color because a pawn can never enter its own promotion area
            if (row == 0 || row == 7)
            {
                moves.Add(MoveHelper.CreateMove(targetPosition, fromPosition, takenPiece, Piece.QUEEN, move, this));
                moves.Add(MoveHelper.CreateMove(targetPosition, fromPosition, takenPiece, Piece.BISHOP, move, this));
                moves.Add(MoveHelper.CreateMove(targetPosition, fromPosition, takenPiece, Piece.KNIGHT, move, this));
                moves.Add(MoveHelper.CreateMove(targetPosition, fromPosition, takenPiece, Piece.ROOK, move, this));
            }
            else
            {
                moves.Add(MoveHelper.CreateMove(targetPosition, fromPosition, takenPiece, Piece.EMPTY, move, this));
            }
        }
Ejemplo n.º 2
0
        public Move FindMove(int from, int to)
        {
            List <Move> moves = GetMovesForPosition(from);

            Move targetPosition = moves.FindTargetPosition(to);

            if (!MoveHelper.isValidMove(targetPosition))
            {
                throw new Exception("Move not found");
            }
            if (!IsLegalMove(targetPosition))
            {
                throw new Exception("Illegal move");
            }

            return(targetPosition);
        }
Ejemplo n.º 3
0
        public void AddMove(int fromPosition, int targetPosition, MoveFlags moveBits, List <Move> moves)
        {
            Piece takenPiece = GetPiece(targetPosition);

            moves.Add(MoveHelper.CreateMove(targetPosition, fromPosition, takenPiece, Piece.EMPTY, moveBits, this));
        }