private void btnJugar_Click(object sender, EventArgs e) { cantDeCeldas1 = 0; cantDeCeldas2 = 0; Maze.kDimension = 10; TheMaze.Initialize(); //TheMaze.Generate(); g1 = pictureBox1.CreateGraphics(); g2 = pictureBox2.CreateGraphics(); g1.FillRectangle(Brushes.White, ClientRectangle); g2.FillRectangle(Brushes.White, ClientRectangle); //dimensiones del laberinto ya resuelto TheMaze.Generate(); TheMaze2 = new Maze(); TheMaze.asignarMismoLaberinto(TheMaze2); TheMaze.Draw(g1); TheMaze2.Draw(g2); //encuentra el punto de inicio y fin de forma aleatoria TheMaze.encontrarInicioFin(g1); TheMaze2.encontrarInicioFin(g2); celdaMovil = TheMaze.inicio; //si el laberinto esta generado va a hacer true generado = true; //genera tiempo generarTiempo(); timer1.Enabled = true; timer2.Enabled = true; recorrido1 = TheMaze.recorrerProfundidad(TheMaze.inicio, TheMaze.fin, g1); recorrido2 = TheMaze2.recorrerProfundidad(TheMaze2.inicio, TheMaze2.fin, g2); TiempoRecorrido1.Start(); // tiempo recorrido1 de computer1 TiempoRecorrido2.Start(); // tiempo recorrido2 de computer2 }
private void btnJugar_Click(object sender, EventArgs e) { cantDeCeldas1 = 0; cantDeCeldas2 = 0; Maze.kDimension = 10; TheMaze.Initialize(); //TheMaze.Generate(); g1 = pictureBox1.CreateGraphics(); g2 = pictureBox2.CreateGraphics(); g1.FillRectangle(Brushes.White, ClientRectangle); g2.FillRectangle(Brushes.White, ClientRectangle); //dimensiones del laberinto ya resuelto TheMaze.Generate(); //TheMaze2 = new Maze(); //TheMaze.asignarMismoLaberinto(TheMaze2); TheMaze.Draw(g1); TheMaze.Draw(g2); //encuentra el punto de inicio y fin de forma aleatoria TheMaze.encontrarInicioFin(g1); TheMaze.encontrarInicioFin(g2); //carga el agente //obtendo las clases del agente Type[] Tipos = ensamblado.GetTypes(); //Obtengo los metodos del agente MethodInfo[] metodos = Tipos[0].GetMethods(); //para usar el metodo del agente en forma dinamica object obj = Activator.CreateInstance(Tipos[0], new object[] { TheMaze.inicio.punto }); //aca instancias el agente //aca termina el reflexion bool noLlego = true; System.Windows.Point puntoAux; System.Windows.Point[] direcciones; puntoAux = TheMaze.inicio.punto; //TheMaze.fin.punto.Y++; List <System.Windows.Point> visitados = new List <System.Windows.Point>();//lista de las celdas visitadas hasta llegar al final visitados.Add(puntoAux); while (noLlego) { direcciones = TheMaze.getVecinos(puntoAux); //getvecinos devuelve un arreglo de puntos apartir de puntoAux para poder pasarle al agente puntoAux = (System.Windows.Point)metodos[0].Invoke(obj, new object[] { direcciones }); // agente.moveAgent(direcciones);//el agente se mueve y me devuelve un punto if (!visitados.Contains(puntoAux)) { visitados.Add(puntoAux); } if (puntoAux == TheMaze.fin.punto) { //si llego al final retorna la lista de visitados noLlego = false; } } // recorrido1 = TheMaze.recorrerProfundidad(); //genera tiempo generarTiempo(); timer1.Enabled = true; timer2.Enabled = true; recorrido1 = TheMaze.recorrerProfundidad(); recorrido2 = visitados; TiempoRecorrido1.Start(); // tiempo recorrido1 de computer1 TiempoRecorrido2.Start(); // tiempo recorrido2 de computer2 }