Ejemplo n.º 1
0
        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
        }
Ejemplo n.º 2
0
        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
        }