private void PlaceHintArrows(int nLeft, int nTop)
        {
            int STEPX = Global.DEF_MAIN_BOARD_W / 8;
            int STEPY = Global.DEF_MAIN_BOARD_H / 8;

            if (Global.g_moveStep1 != Global.MOVEMENT.Empty)
            {
                if (m_ArrowRed1 == null)
                {
                    m_ArrowRed1 = new Arrow(); m_ArrowRed1.Show();
                }

                int nX = nLeft + Global.g_moveStep1.nY * STEPX + STEPX / 2 - 20;
                int nY = nTop + Global.g_moveStep1.nX * STEPY;
                m_ArrowRed1.Location = new Point(nX, nY);

                int nD = Global.g_moveStep1.nD;
                // top
                if (nD == 0)
                {
                    if (m_ToTop1 == null)
                    {
                        m_ToTop1 = new ToTop(); m_ToTop1.Show();
                    }
                    nY = nTop + Global.g_moveStep1.nX * STEPY - (STEPY / 2 - 10);

                    m_ToTop1.Location = new Point(nX, nY);
                }
                else if (nD == 1) // left
                {
                    if (m_ToLeft1 == null)
                    {
                        m_ToLeft1 = new ToLeft(); m_ToLeft1.Show();
                    }

                    nX  = nLeft + Global.g_moveStep1.nY * STEPX - (STEPX / 2 - 20);
                    nY += m_ToLeft1.Height / 2;

                    m_ToLeft1.Location = new Point(nX, nY);
                }
                else if (nD == 2) // right
                {
                    if (m_ToRight1 == null)
                    {
                        m_ToRight1 = new ToRight(); m_ToRight1.Show();
                    }
                    nX  = nLeft + Global.g_moveStep1.nY * STEPX + (STEPX / 2 - 10);
                    nY += m_ToRight1.Height / 2;

                    m_ToRight1.Location = new Point(nX, nY);
                }
                else if (nD == 3) // bottom
                {
                    if (m_ToDown1 == null)
                    {
                        m_ToDown1 = new ToDown(); m_ToDown1.Show();
                    }
                    nY = nTop + Global.g_moveStep1.nX * STEPY + STEPY / 2 - 10;
                    m_ToDown1.Location = new Point(nX, nY);
                }
            }

            if (Global.g_moveStep2 != Global.MOVEMENT.Empty)
            {
                if (m_ArrowBlack1 == null)
                {
                    m_ArrowBlack1 = new BlackArrow(); m_ArrowBlack1.Show();
                }

                int nX = nLeft + Global.g_moveStep2.nY * STEPX + STEPX / 2 - 20;
                int nY = nTop + Global.g_moveStep2.nX * STEPY;
                m_ArrowBlack1.Location = new Point(nX, nY);

                int nD = Global.g_moveStep2.nD;
                // top
                if (nD == 0)
                {
                    if (m_ToTop2 == null)
                    {
                        m_ToTop2 = new ToTop2(); m_ToTop2.Show();
                    }
                    nY = nTop + Global.g_moveStep2.nX * STEPY - (STEPY / 2 - 10);

                    m_ToTop2.Location = new Point(nX, nY);
                }
                else if (nD == 1) // left
                {
                    if (m_ToLeft2 == null)
                    {
                        m_ToLeft2 = new ToLeft2(); m_ToLeft2.Show();
                    }

                    nX  = nLeft + Global.g_moveStep2.nY * STEPX - (STEPX / 2 - 20);
                    nY += m_ToLeft2.Height / 2;

                    m_ToLeft2.Location = new Point(nX, nY);
                }
                else if (nD == 2) // right
                {
                    if (m_ToRight2 == null)
                    {
                        m_ToRight2 = new ToRight2(); m_ToRight2.Show();
                    }
                    nX  = nLeft + Global.g_moveStep2.nY * STEPX + (STEPX / 2 - 10);
                    nY += m_ToRight2.Height / 2;

                    m_ToRight2.Location = new Point(nX, nY);
                }
                else if (nD == 3) // bottom
                {
                    if (m_ToDown2 == null)
                    {
                        m_ToDown2 = new ToDown2(); m_ToDown2.Show();
                    }
                    nY = nTop + Global.g_moveStep2.nX * STEPY + STEPY / 2 - 10;
                    m_ToDown2.Location = new Point(nX, nY);
                }
            }
        }