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); }
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"); } } } }