Exemple #1
0
        // teniendo el grafo construido, determina el camino a seguir con menor coste desde la posicion del tanque
        // hasta la posicion destino. Es llamado al seleccionar la casilla a la que queremos que vaya el tanque
        public void resolveGame(int x, int y)
        {
            CleanInfo();
            UpdateInfo();

            flag.transform.position = tablero.getCasPos(x, y); // ponemos la bandera en el destino

            // creamos A*
            List <NodeCool> pq    = new List <NodeCool>();
            Astar           astar = new Astar(); // la posicion de origen sera la posicion logica del tanque

            time = Time.realtimeSinceStartup;    // contador de tiempo
            astar.Init(graph, ref pq, (int)(puzzle.TankPosition.GetColumn() + columns * puzzle.TankPosition.GetRow()), (int)(y + columns * x), H);
            time          = Time.realtimeSinceStartup - time;
            expandedNodes = astar.GetExpandedNodes();
            depth         = astar.GetDepth();
            memSize       = astar.GetMemSize();
            UpdateInfo();

            // procesamos el camino dado por A*
            StartCoroutine(createPath(astar));
        }