/* 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); }
/* 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(); }