Пример #1
0
 private void Start()
 {
     iniciargrilla(20, 10);
     //pathfindingDebugStepVisual.Setup(grilla);
     pathfindingVisual.SetGrid(grilla);
     pathfindingVisual1.SetGrid(grilla);
     pathfindingVisual2.SetGrid(grilla);
     pathfindingVisual3.SetGrid(grilla);
     pathfindingVisual4.SetGrid(grilla);
     pathfindingVisual5.SetGrid(grilla);
     pathfindingVisualP.SetGrid(grilla);
     pathfindingVisualP1.SetGrid(grilla);
     pathfindingVisualP2.SetGrid(grilla);
     pathfindingVisualP3.SetGrid(grilla);
     StartNode         = grilla.GetGridObject(0, 0);
     VecindadValida    = new List <CasillaNodo>(); // casillas de la vecindad que puede visitar
     SegurosSinVisitar = new List <CasillaNodo> {
         StartNode
     };                                                       // casillas seguras posibles sin visitar
     CaminosVisitados = new List <CasillaNodo>();
     NodoActual       = grilla.GetGridObject(0, 0);
     NodoActual.CrearPosible(-1);
 }
Пример #2
0
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            EvaluarVecindadEfectos(NodoActual);
            if (oroencontrado == false)
            {
                if (SegurosSinVisitar.Count > 0) // mientras que haya casillas seguras sin visitar
                {
                    Debug.Log("movimiento");

                    SegurosSinVisitar.Remove(NodoActual);
                    NodoActual.visitar(true);


                    //VecindadValida = ValorarVecindad(NodoActual);

                    foreach (CasillaNodo NodoValido in EncontrarVecindad(NodoActual)) // para cada vecino valido ....
                    {
                        Debug.Log("foeach");



                        if (NodoValido.Grilla_Agente == 0)
                        {
                            Debug.Log("es seguro el paso");

                            if (NodoValido.Visitado)
                            {
                                Debug.Log("ya esta visitado y es una mierda");
                                continue;
                            }
                            else
                            {
                                VecindadValida.Add(NodoValido);
                                SegurosSinVisitar.Add(NodoValido);

                                //Debug.Log("añade vecindad");
                                //if (!SegurosSinVisitar.Contains(NodoValido))
                                //{
                                //    Debug.Log("añade nodo");
                                //    SegurosSinVisitar.Add(NodoValido);
                                //}
                            }
                        }
                        else
                        {
                            Debug.Log("no entiendo");
                        }
                    }


                    if (VecindadValida.Count > 0) // si la vecindad tiene un nodo seguro no visitado ....
                    {
                        Debug.Log("se mueve");
                        NodoActual.CrearPosible(0);
                        CaminosVisitados.Add(NodoActual);
                        aux        = NodoActual;
                        NodoActual = EvaluarVecindadMov(VecindadValida); // el nodo al que se mueve es el mejor que determina evaluarvecindad ... osea el primero que encuentra seguro en orden horario
                        NodoActual.Crearpadre(aux);
                        NodoActual.CrearPosible(-1);
                    }
                    else
                    {
                        Debug.Log("no hay");
                        NodoActual.CrearPosible(0);
                        //CaminosVisitados.Add(NodoActual);



                        NodoActual = NodoActual.Padre;
                        NodoActual.CrearPosible(-1);
                    }
                    VecindadValida.Clear();
                }
                else
                {
                    Debug.Log("efesota");
                }
            }
            else
            {
                Debug.Log("Ganaste");
            }
        }



        if (EditorType == 0)
        {
            if (Input.GetMouseButtonDown(0))
            {
                Vector3 mouseWordlPosition = UtilsClass.GetMouseWorldPosition();
                grilla.GetXY(mouseWordlPosition, out int x, out int y);
                if (grilla.GetGridObject(x, y).Grilla_Real != 1)
                {
                    grilla.GetGridObject(x, y).CrearReal(1);
                    Debug.Log("pozo hecho");

                    foreach (CasillaNodo NodoValido in EncontrarVecindad(grilla.GetGridObject(x, y)))
                    {
                        NodoValido.CrearReal(3);
                    }
                }
                else
                {
                    grilla.GetGridObject(x, y).CrearReal(0);
                    foreach (CasillaNodo NodoValido in EncontrarVecindad(grilla.GetGridObject(x, y)))
                    {
                        NodoValido.CrearReal(0);
                    }
                    Debug.Log("retirado");
                }
            }
        }
        if (EditorType == 1)
        {
            if (Input.GetMouseButtonDown(0))
            {
                Vector3 mouseWordlPosition = UtilsClass.GetMouseWorldPosition();
                grilla.GetXY(mouseWordlPosition, out int x, out int y);
                if (grilla.GetGridObject(x, y).Grilla_Real != 2)
                {
                    if (WumpusExiste == false)
                    {
                        WumpusExiste = true;
                    }
                    else
                    {
                        grilla.GetGridObject(wumpus[0], wumpus[1]).CrearReal(0);
                        foreach (CasillaNodo NodoValido in EncontrarVecindad(grilla.GetGridObject(wumpus[0], wumpus[1])))
                        {
                            NodoValido.CrearReal(0);
                        }
                    }
                    grilla.GetGridObject(x, y).CrearReal(2);
                    wumpus[0] = x;
                    wumpus[1] = y;
                    foreach (CasillaNodo NodoValido in EncontrarVecindad(grilla.GetGridObject(x, y)))
                    {
                        NodoValido.CrearReal(4);
                    }
                    Debug.Log("wumpus hecho");
                }
                else
                {
                    grilla.GetGridObject(x, y).CrearReal(0);
                    foreach (CasillaNodo NodoValido in EncontrarVecindad(grilla.GetGridObject(x, y)))
                    {
                        NodoValido.CrearReal(0);
                    }
                    Debug.Log("wumpus retirado");
                    WumpusExiste = false;
                }
            }
        }

        if (EditorType == 2)
        {
            if (Input.GetMouseButtonDown(0))
            {
                Vector3 mouseWordlPosition = UtilsClass.GetMouseWorldPosition();
                grilla.GetXY(mouseWordlPosition, out int x, out int y);
                if (grilla.GetGridObject(x, y).Grilla_Real != 5)
                {
                    if (OroExiste == false)
                    {
                        OroExiste = true;
                    }
                    else
                    {
                        grilla.GetGridObject(oro[0], oro[1]).CrearReal(0);
                        foreach (CasillaNodo NodoValido in EncontrarVecindad(grilla.GetGridObject(oro[0], oro[1])))
                        {
                            NodoValido.CrearReal(0);
                        }
                    }
                    grilla.GetGridObject(x, y).CrearReal(5);
                    oro[0] = x;
                    oro[1] = y;
                    Debug.Log("oro hecho");
                }
                else
                {
                    grilla.GetGridObject(x, y).CrearReal(0);
                    OroExiste = false;
                    Debug.Log("oro retirado");
                }
            }
        }
    }