Package algoritmos

Source Code of algoritmos.AlgoritmoAnchura

package algoritmos;


import java.util.Collection;


import java.util.Iterator;


import tablero.CasillaTablero.ColorLinea;
import tablero.CasillaTablero.TipoLinea;
import traza.TrazaAlgoritmo;

public class AlgoritmoAnchura extends AlgoritmoResolucion {
 
  int indice=0;
  int indiceActual=0;
 
  public AlgoritmoAnchura(TrazaAlgoritmo traza,String cadenaHorizontal,String cadenaVertical){
   
    this.traza=traza;
   
    this.cadenaHorizontal=cadenaHorizontal;
    this.cadenaVertical=cadenaVertical;
   
   
   
   
  }
  @Override
  public void run() {
    super.iniciarEstructurasDeDatos();
    // TODO Auto-generated method stub
    this.traza.iniciarAlgoritmo("Anchura");
    Nodo nodoInicio=new Nodo();
    nodoInicio.setFilaColumna(1, 1);
   
    Nodo nodoObjetivo=new Nodo();
    nodoObjetivo.setFilaColumna(this.cadenaVertical.length()+1, this.cadenaHorizontal.length()+1);
   
   
    VariablesProblema variables=new VariablesProblema(nodoInicio,nodoObjetivo);
     
      super.setVariablesProblema(variables);
     
      this.indice=0;
      this.indiceActual=0;
     
      resolverAlgoritmo();
       
      pintarSolucion();
  }
 

  public int funcionCoste(){
   
   
   
    return this.indice+1;
   
  }
  @Override
  public void insertarEnAbiertos(Nodo nuevoNodo, Nodo nodoActual) {
    // TODO Auto-generated method stub
   
    int coste=funcionCoste();
   
   
    TipoLinea tipoLinea=seleccionarTipoLinea(nodoActual,nuevoNodo);
   
   
    if(!this.abiertos.containsKey(nuevoNodo.getCoordenadas()) && !this.cerrados.containsKey(nuevoNodo.getCoordenadas())){
      //Lo insertamos ya que su coste es infinito
      nuevoNodo.setGn(coste);
      //Pintamos la l�nea
      this.traza.pintarLinea(nodoActual.getFila(),nodoActual.getColumna(),nuevoNodo.getFila(),nuevoNodo.getColumna(),tipoLinea,ColorLinea.ABIERTO);
     
     
      this.abiertos.put(nuevoNodo.getCoordenadas(), nuevoNodo);
     
      this.indice++;
     
    }
    else{
     
    }
   
   
   
  }
 
 
 
 
 
  public Nodo siguienteNodo(){
   
   
    Nodo nodoSeleccionado=null;
    Collection<Nodo> c=this.abiertos.values();
    Iterator<Nodo> itr=c.iterator();
   
    while(itr.hasNext()){
      Nodo n=itr.next();
     
      if(n.getGn()==this.indiceActual){
        nodoSeleccionado=n;
      }
     
    }
    this.indiceActual++;
    return nodoSeleccionado;
  }
}
TOP

Related Classes of algoritmos.AlgoritmoAnchura

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.