private boolean move(float a_xa, float a_ya)
    {
        while (a_xa > 8)
        {
            if (!move(8, 0)) return false;
            a_xa -= 8;
        }
        while (a_xa < -8)
        {
            if (!move(-8, 0)) return false;
            a_xa += 8;
        }
        while (a_ya > 8)
        {
            if (!move(0, 8)) return false;
            a_ya -= 8;
        }
        while (a_ya < -8)
        {
            if (!move(0, -8)) return false;
            a_ya += 8;
        }

        //No collision detection. It's fair.
        m_x += a_xa;
        m_y += a_ya;
        return true;
    }