コード例 #1
0
ファイル: AstarHelper.cs プロジェクト: teetotal/Astar
    private int[] ConvertFromInnerPos(Astar.Pos pos)
    {
        int[] ret = new int[2];
        ret[0] = pos.y;
        ret[1] = mHeight - 1 - pos.x;

        return(ret);
    }
コード例 #2
0
ファイル: AstarHelper.cs プロジェクト: teetotal/Astar
    public Queue <int[]> Search(int[] start, int[] end)
    {
        if (start[0] < 0 || end[0] < 0 || start[1] >= mHeight || end[1] >= mHeight)
        {
            return(new Queue <int[]>());
        }
        Astar.Pos posStart = ConvertToInnerPos(start);
        Astar.Pos posEnd   = ConvertToInnerPos(end);

        Stack <Astar.Pos> route = mAstar.Search(posStart, posEnd);
        Queue <int[]>     ret   = new Queue <int[]>();

        while (route.Count() > 0)
        {
            ret.Enqueue(ConvertFromInnerPos(route.Pop()));
        }
        return(ret);
    }