コード例 #1
0
ファイル: CellInfo.cs プロジェクト: wlrud753/CarryCarrot
    public void setPathDir(int _now_pre, int _next_now)
    {
        // _now_pre == nowIDX - preIDX
        switch (_now_pre)
        {
        case 1:
            previousPathDir = PathDir.LEFT;
            break;

        case -1:
            previousPathDir = PathDir.RIGHT;
            break;

        default:     // UP or DOWN
            if (_now_pre > 0)
            {
                previousPathDir = PathDir.UP;
            }
            else
            {
                previousPathDir = PathDir.DOWN;
            }
            break;
        }

        // _next_now == nextIDX - nowIDX
        switch (_next_now)
        {
        case 1:
            nextPathDir = PathDir.RIGHT;
            break;

        case -1:
            nextPathDir = PathDir.LEFT;
            break;

        default:
            if (_next_now > 0)
            {
                nextPathDir = PathDir.DOWN;
            }
            else
            {
                nextPathDir = PathDir.UP;
            }
            break;
        }
    }
コード例 #2
0
    private int getAdjacent(int pos, PathDir dir)
    {
        int tmpPos = -1;

        switch (dir)
        {
        case PathDir.LT:
            if (0 == pos % _row || 0 == pos / _row)
            {
                return(-1);
            }
            tmpPos = pos - _row - 1;
            break;

        case PathDir.T:
            if (0 == pos % _row)
            {
                return(-1);
            }
            tmpPos = pos - 1;
            break;

        case PathDir.RT:
            if (0 == pos % _row || _column - 1 == pos / _row)
            {
                return(-1);
            }
            tmpPos = pos + _row - 1;
            break;

        case PathDir.L:
            if (0 == pos / _row)
            {
                return(-1);
            }
            tmpPos = pos - _row;
            break;

        case PathDir.R:
            if (_column - 1 == pos / _row)
            {
                return(-1);
            }
            tmpPos = pos + _row;
            break;

        case PathDir.LB:
            if (_row - 1 == pos % _row || 0 == pos / _row)
            {
                return(-1);
            }
            tmpPos = pos - _row + 1;
            break;

        case PathDir.B:
            if (_row - 1 == pos % _row)
            {
                return(-1);
            }
            tmpPos = pos + 1;
            break;

        case PathDir.RB:
            if (_row - 1 == pos % _row || _column - 1 == pos / _row)
            {
                return(-1);
            }
            tmpPos = pos + _row + 1;
            break;
        }
        if (tmpPos < 0 || tmpPos >= _total)
        {
            return(-1);
        }
        else
        {
            return(tmpPos);
        }
    }