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); } }
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; } } }