コード例 #1
0
        private void CalcPathFromParent(Pos[,] parent)
        {
            int y = _board.DestY;
            int x = _board.DestX;

            while (parent[y, x].Y != y || parent[y, x].X != x)
            {
                _points.Add(new Pos(y, x));
                Pos pos = parent[y, x];
                y = pos.Y;
                x = pos.X;
            }
            _points.Add(new Pos(y, x));
            _points.Reverse();
        }
コード例 #2
0
        List <Vector2Int> CalcCellPathFromParent(Pos[,] parent, Pos dest)
        {
            List <Vector2Int> cells = new List <Vector2Int>();

            int y = dest.Y;
            int x = dest.X;

            while (parent[y, x].Y != y || parent[y, x].X != x)
            {
                cells.Add(Pos2Cell(new Pos(y, x)));
                Pos pos = parent[y, x];
                y = pos.Y;
                x = pos.X;
            }
            cells.Add(Pos2Cell(new Pos(y, x)));
            cells.Reverse();

            return(cells);
        }
コード例 #3
0
ファイル: Player.cs プロジェクト: bidulgicode/MazeAlgorithm
        void CalcPathFromParent(Pos[,] parent)
        {
            // 목적지로부터 시작점까지 거슬러올라감
            int y = _board.DestY;
            int x = _board.DestX;

            while (parent[y, x].Y != y || parent[y, x].X != x)
            {
                _points.Add(new Pos(y, x));
                // 부모노드 좌표로 이동
                Pos pos = parent[y, x];
                y = pos.Y;
                x = pos.X;
            }
            // 여기서의 y, x좌표는 시작점
            _points.Add(new Pos(y, x)); // 끝점에 도달하는 순간 _points에 add를 안하고 빠져나오기 때문에
            // 역순서로 들어왔으니 뒤집자
            _points.Reverse();
        }
コード例 #4
0
ファイル: BFS.cs プロジェクト: seccoding/Algorithm
        private List <Pos> CalcPathFromParent(Pos[,] parent)
        {
            List <Pos> _points = new List <Pos>();

            // BFS 역순으로 길 찾기
            int y = _board.DestY;
            int x = _board.DestX;

            Pos parentPos;

            while (parent[y, x].Y != y || parent[y, x].X != x)
            {
                _points.Add(new Pos(y, x));

                parentPos = parent[y, x];
                y         = parentPos.Y;
                x         = parentPos.X;
            }

            _points.Add(new Pos(y, x));
            _points.Reverse();

            return(_points);
        }