예제 #1
0
    public void EmpiezaMovimiento(Pos pos)
    {
        _logicaTanke.SetFlecha(new Pos(pos.GetX(), pos.GetY()));

        _flecha.transform.position = new Vector3(pos.GetX() * GameManager.Distancia, -pos.GetY() * GameManager.Distancia, 0);

        _flecha.SetActive(true);

        GameManager.instance.SetSeleccionado(ColorUnidad.ninguno, null);

        SetSpriteDeseleccionado();

        _reloj.Reset();

        _reloj.Start();



        AEstrella A = new AEstrella(GameManager.instance.GetLogicaTablero().GetMatriz(), _logicaTanke.GetPos(), pos);


        _reloj.Stop();
        GameManager.instance.escribeTiempo(_reloj.ElapsedMilliseconds.ToString());


        DisplayPath(A.GetCamino());
        Mueve(A.GetCamino());
    }
    private void mostrarRuta()
    {
        if (tablero == null)
        {
            print("El tablero no ha sido creado");
        }

        if (hayRutaMostrada)
        {
            this.ocultarRuta();
        }

        algoritmoEstrella = estrella.GetComponent <AEstrella>();
        algoritmoEstrella.inicializar();
        bool state = algoritmoEstrella.accion(this.hayDiagonales); // Se realiza el algoritmo de estrella.

        if (state)
        {
            tablero.setRuta(algoritmoEstrella.obtenerMejorRuta());
            tablero.dibujarRutaOptima();
            hayRutaMostrada = true;
            playAudio(audioRoute);
        }
        else
        {
            audioNoRoute.Play();
        }
    }
예제 #3
0
 void Awake()
 {
     currentInstance       = this;
     ComunicationsEnabeled = true;
     aStar                = this.GetComponent <AEstrella>();
     grafoTotal           = CG.nodeMap;
     mapResourceReference = new List <GameObject> ();
 }
예제 #4
0
        public void AEstrella_heurística_DevuelveValorCorrectoCero()
        {
            Vector2 nodoA = Vector2.zero;
            Vector2 nodoB = Vector2.zero;

            float valorEsperado = 0;
            float valorObtenido = AEstrella.heurística(nodoA, nodoB);

            Assert.AreEqual(valorEsperado, valorObtenido);
        }
예제 #5
0
        public void AEstrella_heurística_DevuelveValorCorrectoComplejo()
        {
            // Se usa el típico triángulo rectángulo 3, 4, 5. Reposicionado en (4, 8).
            Vector2 nodoA = Vector2.zero + new Vector2(4, 8);
            Vector2 nodoB = new Vector2(3, 4) + new Vector2(4, 8);

            float valorEsperado = 5;
            float valorObtenido = AEstrella.heurística(nodoA, nodoB);

            Assert.AreEqual(valorEsperado, valorObtenido);
        }
예제 #6
0
        public void SetUp()
        {
            ControladorJuego controlador = new GameObject("ControladorJuego").AddComponent <ControladorJuego>();

            nodoInicio  = new Vector2(2, 3);
            nodoDestino = new Vector2(23, 13);

            nodoPruebas       = new Vector2(6, 7);
            nodoPruebasVecino = new Vector2(6, 8);

            tamaño = TamañoEntidad.NORMAL;

            aEstrella = new AEstrella(nodoInicio, nodoDestino, tamaño);
        }
예제 #7
0
    /// <summary>
    /// Encuentra la ruta más corta desde el casillero de inicio, a un casillero
    /// adyacente al personaje.
    /// Se usa para hacer pathfinding. El algoritmo utilizado es A*.
    /// Si no es alcanzable, se devuelve una lista vacía.
    /// </summary>
    /// <param name="inicio">Casillero de inicio.</param>
    /// <returns>Lista de casilleros que forman la ruta óptima, incluyendo
    /// inicio y destino.</returns>
    public List <Vector2> encontrarRutaÓptima(Vector2 inicio)
    {
        AEstrella aEstrella = new AEstrella(inicio, Tamaño);

        return(aEstrella.calcularRutaÓptima());
    }
예제 #8
0
        public void AEstrella_constructorSinDestino_ValorDestinoEsNegativeInfinity()
        {
            aEstrella = new AEstrella(nodoInicio, TamañoEntidad.NORMAL);

            Assert.AreEqual(aEstrella.Destino, Vector2.negativeInfinity);
        }
예제 #9
0
        public void AEstrella_constructorSinDestino_ValorInicioEsInicio()
        {
            aEstrella = new AEstrella(nodoInicio, TamañoEntidad.NORMAL);

            Assert.AreEqual(aEstrella.Inicio, nodoInicio);
        }
예제 #10
0
        public void AEstrella_constructorSinDestino_ValorInicialPuntajeGNodoInicioEsCero()
        {
            aEstrella = new AEstrella(nodoInicio, TamañoEntidad.NORMAL);

            Assert.AreEqual(aEstrella.PuntajeG[aEstrella.Inicio], 0);
        }
예제 #11
0
        public void AEstrella_constructorSinDestino_AgregaNodoInicioADiccionarioNodoAnterior()
        {
            aEstrella = new AEstrella(nodoInicio, TamañoEntidad.NORMAL);

            Assert.IsTrue(aEstrella.NodoAnterior.ContainsKey(nodoInicio));
        }
예제 #12
0
        public void AEstrella_constructorSinDestino_CreaDiccionarioNodoAnterior()
        {
            aEstrella = new AEstrella(nodoInicio, TamañoEntidad.NORMAL);

            Assert.IsInstanceOf <Dictionary <Vector2, Vector2> >(aEstrella.NodoAnterior);
        }
예제 #13
0
        public void AEstrella_constructorSinDestino_AgregaValorDeNodoInicioAPuntajeG()
        {
            aEstrella = new AEstrella(nodoInicio, TamañoEntidad.NORMAL);

            Assert.IsTrue(aEstrella.PuntajeG.ContainsKey(nodoInicio));
        }
예제 #14
0
        public void AEstrella_constructorSinDestino_NodoAnteriorDeNodoInicioEsNegativeInfinity()
        {
            aEstrella = new AEstrella(nodoInicio, TamañoEntidad.NORMAL);

            Assert.AreEqual(aEstrella.NodoAnterior[aEstrella.Inicio], Vector2.negativeInfinity);
        }
예제 #15
0
        public void AEstrella_constructorSinDestino_ColocaElNodoInicioEnNodosAbiertos()
        {
            aEstrella = new AEstrella(nodoInicio, TamañoEntidad.NORMAL);

            Assert.Contains(nodoInicio, aEstrella.NodosAbiertos);
        }
예제 #16
0
        public void AEstrella_constructorSinDestino_CreaLaListaDeNodosCerrados()
        {
            aEstrella = new AEstrella(nodoInicio, TamañoEntidad.NORMAL);

            Assert.IsInstanceOf <List <Vector2> >(aEstrella.NodosCerrados);
        }