コード例 #1
0
 public void AddPosition(float x, float y)
 {
     if (InBound(x, y))
     {
         IPosition_Connected_Edit p = new Position_Connected_Edit(x, y);
         list.Add(p);
         mapAry[(int)x, (int)y].Add(p);
     }
 }
コード例 #2
0
        protected void GenerateMapFromArray(int[,] maze)
        {
            Clear();

            //根据maze数组创建地图节点
            Position_Connected_Edit p;

            for (int i = 0; i < width; i++)
            {
                for (int j = 0; j < height; j++)
                {
                    if (maze[i, j] != 0)
                    {
                        p = new Position_Connected_Edit(i, j);
                        list.Add(p);
                    }
                }
            }

            PutAllPositionsInListIntoArray();

            int start, end;

            //根据maze数组建立节点间垂直方向的连接
            for (int i = 0; i < width; i++)
            {
                start = 0;
                while (start < height - 1)
                {
                    while (start < height && maze[i, start] == 0)
                    {
                        start++;
                    }
                    end = start;
                    if (start < height - 1)
                    {
                        while (end + 1 < height && maze[i, end + 1] != 0)
                        {
                            end++;
                        }
                        if (end < height && maze[i, end] != 0)
                        {
                            for (int k = start; k < end; k++)
                            {
                                AddDoubleConnection(i, k, i, k + 1, 1);
                            }
                        }
                    }
                    start = end + 1;
                }
            }

            //根据maze数组建立节点间水平方向的连接
            for (int i = 0; i < height; i++)
            {
                start = 0;
                while (start < width - 1)
                {
                    while (start < width && maze[start, i] == 0)
                    {
                        start++;
                    }
                    end = start;
                    if (start < width - 1)
                    {
                        while (end + 1 < width && maze[end + 1, i] != 0)
                        {
                            end++;
                        }
                        if (end < width && maze[end, i] != 0)
                        {
                            for (int k = start; k < end; k++)
                            {
                                AddDoubleConnection(k, i, k + 1, i, 1);
                            }
                        }
                    }
                    start = end + 1;
                }
            }
        }