public void updatePrioridadTest() { Abiertos abiertos = new Abiertos(9, 3, 3); Nodo comprobar_nodo; Nodo nodo1 = new Nodo(); nodo1.vector = new Vector3(1.0f, 0.0f, 0.0f); nodo1.coste = 10.0f; Nodo nodo2 = new Nodo(); nodo2.vector = new Vector3(2.0f, 0.0f, 0.0f); nodo2.coste = 5.0f; abiertos.add(nodo1); abiertos.add(nodo2); nodo1.coste = 2.0f; abiertos.updatePrioridad(nodo1, 2.0f); comprobar_nodo = abiertos.getFirst(); Assert.IsTrue(comprobar_nodo.coste == nodo1.coste && comprobar_nodo.vector == nodo1.vector, "15) No es el nodo que debia ser el primero"); }
public override bool pasoCalcularRuta(out bool error) { error = false; if (abiertos.count() > 0 && !meta_encontrada) { nodo_actual = abiertos.getFirst(); if (esMeta(nodo_actual, vector_meta)) { meta_encontrada = true; nodo_final = nodo_actual; v_trayectoria = vectoresCamino(nodo_final); n_trayectoria = nodosCamino(nodo_final); } else { cerrados.add(nodo_actual); if (dibujar_casillas) { parrilla.visualizarCasilla(nodo_actual.vector, Constantes._CERRADOS); } sucesores = CalcularSucesores(nodo_actual, vector_meta, mapa); foreach (Nodo sucesor in sucesores) { Nodo anterior; if (abiertos.find(sucesor, out anterior)) { if (anterior.coste > sucesor.coste) { anterior.padre = nodo_actual; anterior.coste = sucesor.coste; anterior.costeG = sucesor.costeG; anterior.costeH = sucesor.costeH; //Para el hybrid anterior.sentido = sucesor.sentido; anterior.vector_hybrid = sucesor.vector_hybrid; anterior.angulo_hybrid = sucesor.angulo_hybrid; abiertos.updatePrioridad(anterior, anterior.coste); } } else { if (cerrados.find(sucesor, out anterior)) { if (anterior.coste > sucesor.coste) { cerrados.delete(anterior); abiertos.add(sucesor); if (dibujar_casillas) { parrilla.visualizarCasilla(sucesor.vector, Constantes._ABIERTOS); } } } else //No esta ni en abiertos ni en cerrados { abiertos.add(sucesor); if (dibujar_casillas) { parrilla.visualizarCasilla(sucesor.vector, Constantes._ABIERTOS); } } } } } } else //abiertos esta vacio { if (abiertos.count() == 0) { error = true; } } return(meta_encontrada); }