private bool check(myTree tree, myNode node) { bool c = true; foreach (myNode n in tree.nodes) { if (n.X == node.X && n.Y == node.Y) { c = false; } } return(c); }
private void label38_Click(object sender, EventArgs e)//ids { myNode gool = new myNode(0, 0); bool isGool = pictureBox1.Location.X == pictureBox2.Location.X ? true : false; myNode root = new myNode(pictureBox1.Location.X, pictureBox1.Location.Y); root.level = 0; myTree IDS = new myTree(root); IDS.CurrentNode = root; int z = 367; bool b = true; int i = 0; for (int iz = 0; iz < z; iz++) { IDS.CurrentNode.Visited = true; List <myNode> newNodes = new List <myNode>(); pictureBox3.Location = new Point(IDS.CurrentNode.X, IDS.CurrentNode.Y); if (pictureBox3.Bounds.IntersectsWith(pictureBox2.Bounds)) { gool = IDS.CurrentNode; break; } myNode node1 = new myNode(IDS.CurrentNode.X + 10, IDS.CurrentNode.Y); pictureBox3.Location = new Point(node1.X, node1.Y); if (collision1()) { node1 = null; } else { node1.Parent = IDS.CurrentNode; node1.level = IDS.CurrentNode.level + 1; if (check(IDS, node1)) { IDS.nodes.Add(node1); } } newNodes.Add(node1); myNode node2 = new myNode(IDS.CurrentNode.X - 10, IDS.CurrentNode.Y); pictureBox3.Location = new Point(node2.X, node2.Y); if (collision1()) { node2 = null; } else { node2.Parent = IDS.CurrentNode; node2.level = IDS.CurrentNode.level + 1; if (check(IDS, node2)) { IDS.nodes.Add(node2); } } newNodes.Add(node2); myNode node3 = new myNode(IDS.CurrentNode.X, IDS.CurrentNode.Y + 10); pictureBox3.Location = new Point(node3.X, node3.Y); if (collision1()) { node3 = null; } else { node3.Parent = IDS.CurrentNode; node3.level = IDS.CurrentNode.level + 1; if (check(IDS, node3)) { IDS.nodes.Add(node3); } } newNodes.Add(node3); myNode node4 = new myNode(IDS.CurrentNode.X, IDS.CurrentNode.Y - 10); pictureBox3.Location = new Point(node4.X, node4.Y); if (collision1()) { node4 = null; } else { node4.Parent = IDS.CurrentNode; node4.level = IDS.CurrentNode.level + 1; if (check(IDS, node4)) { IDS.nodes.Add(node4); } } newNodes.Add(node4); IDS.CurrentNode = IDS.CurrentNode.expand(newNodes); IDS.CurrentNode = IDS.nodes[iz + 1]; if (i == z - 1 && i < IDS.nodes.Count) { ++z; iz = 0; } i++; } Stack path = new Stack(); while (b) { path.Push(gool); gool = gool.Parent; if (gool == root) { b = false; } break; } int time = 0; for (int iz = 0; iz < IDS.nodes.Count; iz++) { if (IDS.nodes[iz].Visited == true) { time++; } } int PathCost = path.Count; while (path.Count != 0) { myNode temp = (myNode)path.Pop(); pictureBox1.Location = new Point(temp.X, temp.Y); pictureBox1.Refresh(); System.Threading.Thread.Sleep(50); } if (b == true) { MessageBox.Show("Congratolation \n your path cost = " + (Math.Abs((PathCost + IDS.nodes.Count) * (z - IDS.nodes.Count))) + " \n your space = " + IDS.nodes.Count + "\n your time = " + time); } }
private void label36_Click(object sender, EventArgs e)//dls { myNode gool = new myNode(0, 0); bool isGool = pictureBox1.Location.X == pictureBox2.Location.X ? true : false; myNode root = new myNode(pictureBox1.Location.X, pictureBox1.Location.Y); root.level = 0; myTree DlS = new myTree(root); DlS.CurrentNode = root; for (int i = 0; i < 50; i++) { DlS.CurrentNode.Visited = true; List <myNode> newNodes = new List <myNode>(); pictureBox3.Location = new Point(DlS.CurrentNode.X, DlS.CurrentNode.Y); if (pictureBox3.Bounds.IntersectsWith(pictureBox2.Bounds)) { gool = DlS.CurrentNode; break; } myNode node1 = new myNode(DlS.CurrentNode.X + 10, DlS.CurrentNode.Y); pictureBox3.Location = new Point(node1.X, node1.Y); if (collision1()) { node1 = null; } else { node1.Parent = DlS.CurrentNode; node1.level = DlS.CurrentNode.level + 1; if (check(DlS, node1)) { DlS.nodes.Add(node1); } } newNodes.Add(node1); myNode node2 = new myNode(DlS.CurrentNode.X - 10, DlS.CurrentNode.Y); pictureBox3.Location = new Point(node2.X, node2.Y); if (collision1()) { node2 = null; } else { node2.Parent = DlS.CurrentNode; node2.level = DlS.CurrentNode.level + 1; if (check(DlS, node2)) { DlS.nodes.Add(node2); } } newNodes.Add(node2); myNode node3 = new myNode(DlS.CurrentNode.X, DlS.CurrentNode.Y + 10); pictureBox3.Location = new Point(node3.X, node3.Y); if (collision1()) { node3 = null; } else { node3.Parent = DlS.CurrentNode; node3.level = DlS.CurrentNode.level + 1; if (check(DlS, node3)) { DlS.nodes.Add(node3); } } newNodes.Add(node3); myNode node4 = new myNode(DlS.CurrentNode.X, DlS.CurrentNode.Y - 10); pictureBox3.Location = new Point(node4.X, node4.Y); if (collision1()) { node4 = null; } else { node4.Parent = DlS.CurrentNode; node4.level = DlS.CurrentNode.level + 1; if (check(DlS, node4)) { DlS.nodes.Add(node4); } } newNodes.Add(node4); DlS.CurrentNode.expand(newNodes); DlS.CurrentNode = DlS.nodes[i + 1]; } Stack path = new Stack(); bool b = true; while (b) { if (gool == root) { b = false; } MessageBox.Show("sorry can't reach the goal☺"); break; } int time = 0; for (int i = 0; i < DlS.nodes.Count; i++) { if (DlS.nodes[i].Visited == true) { time++; } } int PathCost = path.Count; while (path.Count != 0) { myNode temp = (myNode)path.Pop(); pictureBox1.Location = new Point(temp.X, temp.Y); pictureBox1.Refresh(); System.Threading.Thread.Sleep(50); } if (b == true) { MessageBox.Show("Congratolation \n your path cost = " + PathCost + " \n your space = " + DlS.nodes.Count + "\n your time = " + time); } }
private void label33_Click(object sender, EventArgs e)//bfs { myNode gool = new myNode(0, 0); bool isGool = pictureBox1.Location.X == pictureBox2.Location.X ? true : false; myNode root = new myNode(pictureBox1.Location.X, pictureBox1.Location.Y); root.level = 0; myTree BFS = new myTree(root); BFS.CurrentNode = root; //while (!isGool) //{ for (int i = 0; i < BFS.nodes.Count; i++) { BFS.CurrentNode.Visited = true; List <myNode> newNodes = new List <myNode>(); pictureBox3.Location = new Point(BFS.CurrentNode.X, BFS.CurrentNode.Y); if (pictureBox3.Bounds.IntersectsWith(pictureBox2.Bounds)) { gool = BFS.CurrentNode; break; } // EXBAND NEW NODES myNode node1 = new myNode(BFS.CurrentNode.X + 10, BFS.CurrentNode.Y); pictureBox3.Location = new Point(node1.X, node1.Y); // System.Threading.Thread.Sleep(600); if (collision1()) { node1 = null; } else { node1.Parent = BFS.CurrentNode; node1.level = BFS.CurrentNode.level + 1; //if(!BFS.nodes.Contains(node1)) if (check(BFS, node1)) { BFS.nodes.Add(node1); } } newNodes.Add(node1); myNode node2 = new myNode(BFS.CurrentNode.X, BFS.CurrentNode.Y + 10); pictureBox3.Location = new Point(node2.X, node2.Y); // System.Threading.Thread.Sleep(600); if (collision1()) { node2 = null; } else { node2.Parent = BFS.CurrentNode; node2.level = BFS.CurrentNode.level; //if (!BFS.nodes.Contains(node2)) if (check(BFS, node2)) { BFS.nodes.Add(node2); } } newNodes.Add(node2); myNode node3 = new myNode(BFS.CurrentNode.X - 10, BFS.CurrentNode.Y); pictureBox3.Location = new Point(node3.X, node3.Y); // System.Threading.Thread.Sleep(600); if (collision1()) { node3 = null; } else { node3.Parent = BFS.CurrentNode; node3.level = BFS.CurrentNode.level + 1; //if (!BFS.nodes.Contains(node3)) if (check(BFS, node3)) { BFS.nodes.Add(node3); } } newNodes.Add(node3); myNode node4 = new myNode(BFS.CurrentNode.X, BFS.CurrentNode.Y - 10); pictureBox3.Location = new Point(node4.X, node4.Y); // System.Threading.Thread.Sleep(600); if (collision1()) { node4 = null; } else { node4.Parent = BFS.CurrentNode; node4.level = BFS.CurrentNode.level + 1; //if (!BFS.nodes.Contains(node4)) if (check(BFS, node4)) { BFS.nodes.Add(node4); } } newNodes.Add(node4); BFS.CurrentNode.expand(newNodes); // MessageBox.Show(BFS.CurrentNode.X.ToString()); BFS.CurrentNode = BFS.nodes[i + 1]; } Stack path = new Stack(); bool b = true; while (b) { path.Push(gool); gool = gool.Parent; if (gool == root) { b = false; } } int time = 0; for (int i = 0; i < BFS.nodes.Count; i++) { if (BFS.nodes[i].Visited == true) { time++; } } int PathCost = path.Count; while (path.Count != 0) { myNode temp = (myNode)path.Pop(); pictureBox1.Location = new Point(temp.X, temp.Y); pictureBox1.Refresh(); System.Threading.Thread.Sleep(50); } MessageBox.Show("Congratolation \n your path cost = " + PathCost + " \n your space = " + BFS.nodes.Count + "\n your time = " + time); }