public void countTest() { Cerrados cerrados = new Cerrados(); Assert.IsTrue(cerrados.count() == 0, "11) No es correcto, es " + cerrados.count() + " y debia ser " + 0); 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 = 1.0f; cerrados.add(nodo1); cerrados.add(nodo2); Assert.IsTrue(cerrados.count() == 2, "12) No es correcto, es " + cerrados.count() + " y debia ser " + 2); cerrados.delete(nodo2); Assert.IsTrue(cerrados.count() == 1, "13) No es correcto, es " + cerrados.count() + " y debia ser " + 1); cerrados.delete(nodo1); Assert.IsTrue(cerrados.count() == 0, "14) No es correcto, es " + cerrados.count() + " y debia ser " + 0); }
public void deleteTest() { Cerrados cerrados = new Cerrados(); bool comprobar; Nodo nodo = new Nodo(); nodo.vector = new Vector3(1.0f, 0.0f, 0.0f); nodo.coste = 1.0f; cerrados.add(nodo); comprobar = cerrados.comprobar(nodo); Assert.IsTrue(comprobar, "3) No esta el nodo que introducimos"); comprobar = cerrados.delete(nodo); Assert.IsTrue(comprobar, "4) Se ha borrado el nodo"); comprobar = cerrados.comprobar(nodo); Assert.IsFalse(comprobar, "5) No se ha borrado"); }
public void findNodoTest() { Cerrados cerrados = new Cerrados(); bool comprobar; Nodo comprobar_nodo; Nodo nodo = new Nodo(); nodo.vector = new Vector3(1.0f, 0.0f, 0.0f); nodo.coste = 1.0f; cerrados.add(nodo); comprobar = cerrados.find(nodo, out comprobar_nodo); Assert.IsTrue(comprobar_nodo.coste == nodo.coste && comprobar_nodo.vector == nodo.vector, "6) No es el mismo nodo que introducimos"); Assert.IsTrue(comprobar, "7) No se ha encontrado el nodo que introducimos"); cerrados.delete(nodo); comprobar = cerrados.find(nodo, out comprobar_nodo); Assert.IsNull(comprobar_nodo, "8) No tenia que haber encontrado el nodo"); Assert.IsFalse(comprobar, "9) No tenia que haber encontrado el nodo"); }
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); }