public void testRandomMap() { List <IPosition_Connected_Edit> list = RandomIntPositions.generateRandomIntPositions(10, 10, 50, 2, 4, 16, 0.6, 0.3, 0.1); IPosition_Connected_Edit adj; StringBuilder sb = new StringBuilder(); //Console.WriteLine(open.Count); sb.AppendLine(list.Count.ToString()); foreach (IPosition_Connected_Edit p in list) { //Console.Write(p.ToString()+"\t"); sb.Append(p.ToString() + "\t"); IPositionSet_Connected_AdjacencyEdit adjSet = p.GetAdjacencyPositionSetEdit(); adjSet.InitToTraverseSet(); while (adjSet.NextPosition()) { adj = adjSet.GetPosition_Connected_Edit(); //Console.Write(adj.ToString() + ":" + p.GetDistanceToAdjacency().ToString() + "\t"); sb.Append(adj.ToString() + ":" + adjSet.GetDistanceToAdjacency().ToString() + "\t"); } //Console.WriteLine(); sb.AppendLine(); } Console.WriteLine(sb.ToString()); }
private void toolStripButton8_Click(object sender, EventArgs e) { IPosition_Connected_Edit p, adj; StringBuilder sb = new StringBuilder(); sb.AppendLine("Position:\tAdjacency:"); for (int i = 0; i < mapWidth; i++) { for (int j = 0; j < mapHeight; j++) { if (map.Exists(i, j)) { p = map.GetPosition(i, j); sb.Append(p.ToString()); sb.Append("\t"); IPositionSet_Connected_AdjacencyEdit adjSet = p.GetAdjacencyPositionSetEdit(); adjSet.InitToTraverseSet(); while (adjSet.NextPosition()) { adj = adjSet.GetPosition_Connected_Edit(); sb.Append(adj.ToString() + ":" + adjSet.GetDistanceToAdjacency().ToString() + "\t"); } sb.AppendLine(); } } } IPosition_Connected start = map.GetStartPosition(); IPosition_Connected end = map.GetEndPosition(); if (start != null) { sb.Append("Start position:" + start.ToString()); } if (end != null) { sb.Append("End position:" + end.ToString()); } sb.AppendLine(SearchForPath(astar, false)); if (path != null) { sb.AppendLine(); sb.AppendLine("Path length:" + path.Count); foreach (IPosition_Connected iter in path) { sb.Append(iter.ToString() + iter.GetAttachment().ToString() + "\t"); } } infoForm.SetText(sb.ToString()); infoForm.Show(); infoForm.Activate(); if (colorThePathToolStripMenuItem.Checked) { drawMap(); } }
public void RemovePosition_Connected(IPosition_Connected p) { IPositionSet_Connected_AdjacencyEdit adjSet = ((IPosition_Connected_Edit)p).GetAdjacencyPositionSetEdit(); adjSet.InitToTraverseSet(); while (adjSet.NextPosition()) { IPosition_Connected_Edit adj = adjSet.GetPosition_Connected_Edit(); adj.GetAdjacencyPositionSetEdit().RemoveAdjacency(p); adjSet.RemoveAdjacency(adj); } list.Remove(p); }
public bool IsConnected(IPosition_Connected_Edit p1, IPosition_Connected_Edit p2) { if (p1 != null && p2 != null) { IPositionSet_Connected_AdjacencyEdit adjSet = p1.GetAdjacencyPositionSetEdit(); adjSet.InitToTraverseSet(); while (adjSet.NextPosition()) { if (p2.Equals(adjSet.GetPosition_Connected_Edit())) { return(true); } } } return(false); }
public void RemovePosition(float x, float y) { IPosition_Connected_Edit p = FindPosition(x, y); if (p != null) { mapAry[(int)x, (int)y].Remove(p); list.Remove(p); IPositionSet_Connected_AdjacencyEdit adjSet = p.GetAdjacencyPositionSetEdit(); adjSet.InitToTraverseSet(); while (adjSet.NextPosition()) { IPosition_Connected_Edit adj = adjSet.GetPosition_Connected_Edit(); adj.GetAdjacencyPositionSetEdit().RemoveAdjacency(p); adjSet.RemoveAdjacency(adj); } } }
protected void drawMap() { buffer.Clear(panel1.BackColor); IPosition_Connected_Edit adj; //先画节点间连接,再画节点,让节点覆盖在连接上,看起来比较清晰 foreach (IPosition_Connected_Edit p in map.GetPositionList()) { IPositionSet_Connected_AdjacencyEdit adjSet = p.GetAdjacencyPositionSetEdit(); adjSet.InitToTraverseSet(); while (adjSet.NextPosition()) { adj = adjSet.GetPosition_Connected_Edit(); drawConnection(linePen, p.GetX(), p.GetY(), adj.GetX(), adj.GetY()); } } foreach (IPosition_Connected_Edit p in map.GetPositionList()) { drawNode(p.GetX(), p.GetY()); } refreshTags(); }