/// <summary>
        /// Explora una celda y devuelve un resultado que puede ser por ejemplo
        /// </summary>
        public RegistroExploracion ExplorarCeldas(Node <Celda> nodoActual)
        {
            RegistroExploracion registroExploracion = new RegistroExploracion();

            registroExploracion.NodoCurrent      = nodoActual;
            nodoActual.Value.cuadrito.Background = Brushes.Green;


            try
            {
                Random rnd = new Random();
                //tengo que obtener la lista de los nodos adyacentes al que tengo que es el nodoActual
                //despues almacenar en int la cantidad de nodos adyacentes que tenemos
                //despues aleatoriamente seleccionar uno.
                //dibujar eso.
                NodeList <Celda> listaNodosAyacentes = nodoActual.AdyacentsNodes;
                int cantidad         = listaNodosAyacentes.Count;
                int randomNumberNode = rnd.Next(0, cantidad);

                Celda celda = listaNodosAyacentes[randomNumberNode].Value;
                celda.cuadrito.Background = Brushes.Red;

                listaNodosAyacentes[randomNumberNode].IsVisit = true;
                registroExploracion.NodoNext = listaNodosAyacentes[randomNumberNode];
                //esto seria la recomensa de la casilla futura a la que llegamos
                registroExploracion.Recompemsa = listaNodosAyacentes[randomNumberNode].Value.Recompensa;

                return(registroExploracion);
            }
            catch (Exception e)
            {
                throw;
            }
        }
Exemplo n.º 2
0
        public void Explorar()
        {
            //inicialmente la celda actual es la 1,1
            Node <Celda> nodoActual = Tablero.getPrimeraCelda();

            DispatcherTimer dispathcer = new DispatcherTimer();
            int             counter    = 0;

            //Intervalo de 1 segundo
            dispathcer.Interval = new TimeSpan(0, 0, 1);
            dispathcer.Tick    += (s, a) => {
                //por cada interaccion obtenemos un registro
                RegistroExploracion registro = Tablero.ExplorarCeldas(nodoActual);
                //añadirmos el registro que obtenemos a la tabla que tendra binding con la tabla de WPF
                //pero debemos evaluar si exite uno, en cuyo caso como ya pasó por ahí no se añade

                if (nodoActual.Value.Recompensa == 100)
                {
                    isFoundRecompensa = true;
                }

                int contador = 0;
                //vamos a ver si el elemento esta en el data grid
                foreach (RegistroExploracionGrid item in TablaExploracion)
                {
                    RegistroExploracionGrid regAux = new RegistroExploracionGrid(registro);

                    if (item.NodoCurrent.Equals(regAux.NodoCurrent) && item.NodoNext.Equals(regAux.NodoNext) &&
                        item.Accion.Equals(regAux.Accion) && item.Recompensa.Equals(regAux.Recompensa))
                    {
                        //si el elemento ya esta en la lista lo borra
                        TablaExploracion.RemoveAt(contador);
                        break;
                    }

                    contador++;
                }

                TablaExploracion.Add(new RegistroExploracionGrid(registro));
                //aqui cambiamos la celda actual a otra...
                nodoActual = registro.NodoNext;

                //hasta que no encuentre el explorador la recomensa no va a parar
                if (counter > 25 && isFoundRecompensa)
                {
                    dispathcer.Stop();
                }

                counter++;
            };

            dispathcer.Start();

            //numero de iteraciones


            //haremos esto una serie de veces hasta finalizar la exploracion
        }
Exemplo n.º 3
0
        /// <summary>
        /// Explorar si que veamos por pantalla
        /// </summary>
        public void ExplorarRapido()
        {
            //inicialmente la celda actual es la 1,1
            Node <Celda> nodoActual = Tablero.getPrimeraCelda();


            int contador = 0;

            while (contador < 25)
            {
                //por cada interaccion obtenemos un registro
                RegistroExploracion registro = Tablero.ExplorarCeldas(nodoActual);
                //añadirmos el registro que obtenemos a la tabla que tendra binding con la tabla de WPF
                //pero debemos evaluar si exite uno, en cuyo caso como ya pasó por ahí no se añade
                int contador2 = 0;
                //vamos a ver si el elemento esta en el data grid
                foreach (RegistroExploracionGrid item in TablaExploracion)
                {
                    RegistroExploracionGrid regAux = new RegistroExploracionGrid(registro);

                    if (item.NodoCurrent.Equals(regAux.NodoCurrent) && item.NodoNext.Equals(regAux.NodoNext) &&
                        item.Accion.Equals(regAux.Accion) && item.Recompensa.Equals(regAux.Recompensa))
                    {
                        //si el elemento ya esta en la lista lo borra
                        TablaExploracion.RemoveAt(contador2);
                        break;
                    }

                    contador2++;
                }

                TablaExploracion.Add(new RegistroExploracionGrid(registro));
                //aqui cambiamos la celda actual a otra...
                nodoActual = registro.NodoNext;

                contador++;
            }
        }