コード例 #1
0
        /* Realiza el algoritmo Estrella. */
        public Boolean accion(Boolean Diagonales)
        {
            Ficha jugador = this.campoJuego.getJugador();

            listaInsertados.Insert(0, jugador);

            DateTime tiempoInicial = DateTime.Now;

            /* Compare si llegue a la meta. O sea ¿Inicio == Final? */
            while (compararMeta(jugador.getX(), jugador.getY()) == false)
            {
                if (Diagonales)   // Se permiten diagonales
                {
                    obtenerAliadosDiagonal(jugador);
                }
                else              // No se permiten diagonales
                {
                    obtenerAliadosLaterales(jugador);
                }

                jugador = listaBuscados.getFicha(); // Retorna el posible movimiento con el costo más bajo.
                listaInsertados.Insert(0, jugador);

                // Si no hay rutas óptimas.
                if (jugador == null)
                {
                    return(false);
                }
            }
            DateTime tiempoFinal = DateTime.Now;

            tiempoAlgoritmo = new TimeSpan(tiempoFinal.Ticks - tiempoInicial.Ticks);

            this.distanciaRecorrida = jugador.getCostoTotal();
            seleccionarRutaOptima(jugador); // Inicializo la ruta óptima con la meta hasta el punto inicial.

            return(true);
        }
コード例 #2
0
 /* Constructor para almacenar la ficha previa. */
 public Blanco(int x, int y, Ficha previous) : base(x, y)
 {
     costoManhattan   = 0;
     this.previous    = previous; // Defino el valor previo.
     this.costoTotal += previous.getCostoTotal();
 }