Examples of Nodo


Examples of algoritmos.AlgoritmoResolucion.Nodo

  @Override
  public void run() {
    super.iniciarEstructurasDeDatos();
    // TODO Auto-generated method stub
    this.traza.iniciarAlgoritmo("Dijkstra");
    Nodo nodoInicio=new Nodo();
    nodoInicio.setFilaColumna(1, 1);
   
    Nodo nodoObjetivo=new Nodo();
    nodoObjetivo.setFilaColumna(this.cadenaVertical.length()+1, this.cadenaHorizontal.length()+1);
   
    //System.out.println(nodoObjetivo.toString());
    VariablesProblema variables=new VariablesProblema(nodoInicio,nodoObjetivo);
     
      super.setVariablesProblema(variables);
View Full Code Here

Examples of algoritmos.AlgoritmoResolucion.Nodo

     
       
      }
    }
    else{
      Nodo nodoTemp=this.abiertos.get(nuevoNodo.getCoordenadas());
      if(nodoTemp.getGn()>(nodoActual.getGn()+coste)){
        nodoTemp.setGn(nodoActual.getGn()+coste);
        //Borramos la l�nea anterior que lo conectaba al padre
        this.traza.pintarLinea(nodoTemp.getFilaPadre(), nodoTemp.getColumnaPadre(), nodoTemp.getFila(), nodoTemp.getColumna(), TipoLinea.INVISIBLE,ColorLinea.ABIERTO);
        //Pintamos la l�nea
        this.traza.pintarLinea(nodoActual.getFila(),nodoActual.getColumna(),nuevoNodo.getFila(),nuevoNodo.getColumna(),tipoLinea,ColorLinea.ABIERTO);
       
        this.abiertos.put(nodoTemp.getCoordenadas(), nodoTemp);
       
      }
     
     
     
View Full Code Here

Examples of algoritmos.AlgoritmoResolucion.Nodo

 
 
  public Nodo siguienteNodo(){
   
    Integer menorNodorNoVisitado=Integer.MAX_VALUE;
    Nodo nodoSeleccionado=null;
    Collection<Nodo> c=this.abiertos.values();
   
    Iterator<Nodo> itr=c.iterator();
   
    while(itr.hasNext()){
      Nodo n=itr.next();
     
      if(!n.getVisitado() && n.getGn()<menorNodorNoVisitado ){
        menorNodorNoVisitado=n.getGn();
        nodoSeleccionado=n;
      }
     
    }
   
View Full Code Here

Examples of src.pathFinding.Nodo

   
   
    List open=new ArrayList();
    List closed=new ArrayList();
    int rango=unidad.getMovementSpeed();
    open.add(new Nodo(unidad.getPosition(),null,destino,unidad,new ArrayList()));
    Nodo nodoAExplorar=null;
    while(open.size()>0){
     
      nodoAExplorar=buscarMenorF(open);
     
      if (nodoAExplorar.getPunto().equals(destino))//encontre el camino
        break;
      if (closed.size()>100){
        nodoAExplorar=buscarMenorF(closed);
        break;
      }
      if (aRangoDeAccion){
        if (nodoAExplorar.getPunto().distance(destino)<=unidad.getActionRange())
          break;
      }
     
     
      closed.add(nodoAExplorar);
      open.remove(nodoAExplorar);
     
     
      //checheo los vecinos y los agrego a la open list si son validos
      boolean puntoInvalido=false;
      int centroX=nodoAExplorar.getPunto().getX();
      int centroY=nodoAExplorar.getPunto().getY();
      int limiteIzquierdo=(centroX-rango)>=0 ? centroX-rango : 0;
      int limiteDerecho=(centroX+rango)<fortaleza.anchoMapa ? centroX+rango : fortaleza.anchoMapa-1;
      int limiteSuperior=(centroY-rango)>=0 ? centroY-rango : 0;
      int limiteInferior=(centroY+rango)<fortaleza.altoMapa ? centroY+rango : fortaleza.altoMapa-1;
      for (int i = limiteIzquierdo; i<=limiteDerecho;i++  ){
        for (int j=limiteSuperior;j<=limiteInferior;j++){
          Point posibleSalto=new Point(i,j);
          //chequeo que no este en la closed list ��
          Iterator itClosed=closed.iterator();
          boolean enClosed=false;
          while (itClosed.hasNext()){
            Nodo nodo=(Nodo)itClosed.next();
            if (nodo.getPunto().getX()==i && nodo.getPunto().getY()==j){
              enClosed=true;
              break;
            }
          }
          if (enClosed)
            continue;
          if ((!unidad.isFavorecerDiagonalesImperfectas() && !(i==centroX && j==centroY) && nodoAExplorar.getPunto().distance(posibleSalto)<=rango)
            || (unidad.isFavorecerDiagonalesImperfectas() && !(i==centroX) && !(j==centroY) && i!=j && nodoAExplorar.getPunto().distance(posibleSalto)<=rango)){
            puntoInvalido=false;
            List puntosIntermedios=new ArrayList();
            int desplazamientoX=posibleSalto.getX()-centroX;
            int desplazamientoY=posibleSalto.getY()-centroY;
            int cantidadDiagonalesExactas=Math.min(Math.abs(desplazamientoX), Math.abs(desplazamientoY));
            int diagonalX=desplazamientoX>0 ? 1: -1;
            int diagonalY=desplazamientoY>0 ? 1: -1;
            desplazamientoX=Math.abs(desplazamientoX-cantidadDiagonalesExactas*diagonalX);
            desplazamientoY=Math.abs(desplazamientoY-cantidadDiagonalesExactas*diagonalY);
            while (desplazamientoX>0){//es uno u el otro
              puntosIntermedios.add(new Point(centroX+desplazamientoX*diagonalX,centroY));
              desplazamientoX--;
            }
            while (desplazamientoY>0){//es uno u el otro
              puntosIntermedios.add(new Point(centroX,centroY+desplazamientoY*diagonalY));
              desplazamientoY--;
           
            while (cantidadDiagonalesExactas>0){
              cantidadDiagonalesExactas--;
              puntosIntermedios.add(new Point(posibleSalto.getX()-diagonalX*cantidadDiagonalesExactas,posibleSalto.getY()-diagonalY*cantidadDiagonalesExactas));
            }
            //chequear camino a ese vecino
            Iterator it=puntosInvalidos.iterator();
            while (it.hasNext()){
              MapElement invalido=(MapElement)it.next();
              Iterator it2=puntosIntermedios.iterator();
              while (it2.hasNext()){
                Point wayPoint=(Point)it2.next();
                if (invalido.getPosition().equals(wayPoint)){
                  puntoInvalido=true;
                  break;
                }
              }
              if (puntoInvalido)
              break;
            }
           
            if (!puntoInvalido){
              // si no esta en la open list lo agrego, si esta y tiene mayor costo G cambio el padre por este
              agregarNodo(open,posibleSalto,nodoAExplorar, destino,unidad,puntosIntermedios);
            }
          }
        }
      }
      //termine con los vecions
    }
    if (open.size()==0){//si no tengo camino lo mando al punto cercano
      List nodos=open;
      nodos.addAll(closed);
      Iterator menorH=nodos.iterator();

      while (menorH.hasNext()){
        Nodo nodo=(Nodo)menorH.next();
        if (nodo.getFCost()<nodoAExplorar.getFCost()){
          nodoAExplorar=nodo;
        }
      }
    }
    //rearmo el camino
     
    Nodo padre=nodoAExplorar;
   
    while (padre!=null){
      camino.add(0,padre.punto);
      padre=padre.getPadre();
    }
    if (camino.size()>1)
      camino.remove(0);
    return camino;
  }
View Full Code Here

Examples of src.pathFinding.Nodo

    return camino;
  }
       
  private static Nodo buscarMenorF(List open) {
    Iterator it=open.iterator();
    Nodo menorF=null;
    while (it.hasNext()){
      Nodo nodo=(Nodo)it.next();
      if (menorF==null || nodo.getFCost()<menorF.getFCost())
        menorF=nodo;
    }
    return menorF;
  }
View Full Code Here

Examples of src.pathFinding.Nodo

  private static void agregarNodo(List open, Point punto, Nodo padre,Point destino,UnidadBasica unidad,List intermedios) {
    Iterator it=open.iterator();
    boolean yaEstaba=false;
    while (it.hasNext()){
      Nodo nodo=(Nodo)it.next();
      if (nodo.getPunto().getX()==punto.getX() && nodo.getPunto().getY()==punto.getY()){
        if (padre.getGCost()<nodo.getGCost()){
          nodo.setPadre(padre);
          nodo.setGCost(unidad,intermedios);
          nodo.setHCost(destino,unidad.getMovementSpeed());
        }
        yaEstaba=true;
        break;
      }
    }
    if (!yaEstaba){
      open.add(new Nodo(punto,padre,destino,unidad, intermedios));
    }

   
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.