Package com.gameloftProgrammersCup.client

Examples of com.gameloftProgrammersCup.client.ClientCommand


        recursosAnteriores=this.resourcesStored();
      else
        costoUnidad=recursosAnteriores-this.resourcesStored();
    }
   
    ClientCommand nuevoComando=estrategia.fabricarUnidad(this);
   
   
    //hay que hacer una decision bonita para ver que producir
    /*
    int cantidadRecolectores =0;
View Full Code Here


    Iterator it = unidades.iterator();
    while(it.hasNext())
    {
      //olvidalo if(it.getClass().getName().equals("Guardia"))
      UnidadBasica ub= (UnidadBasica)it.next();
      ClientCommand nuevoComando =ub.actuar();
      if (nuevoComando != null){
        if (nuevoComando.getDestination()==null)
          System.out.println("Error jodido");
        comandos.add(nuevoComando);
      }
      /*comentado el choclo para poder probar guardias */
      /*UnidadBasica unidad= (UnidadBasica) it.next();
View Full Code Here

   * @param destino: destino final
   * @return comando
   */
  public ClientCommand moverA(UnidadBasica ub, Point destino){

    ClientCommand nuevoComando = new ClientCommand();
    Point pMovida = new Point(ub.getPosition().getX(),ub.getPosition().getY());//por las dudas que algo falle
    ub.getJugador().incIdComando();
    nuevoComando.setId(ub.getJugador().getIdComando());
    nuevoComando.setIdUnit(ub.getId());
    if (ub.getWayPoints()==null || ub.getWayPoints().size()==0 || !Astar.verificarCamino(ub)){
      ub.setWayPoints(Astar.intentoDePathFinding(destino, ub, ub.getJugador().getFortaleza()));
    }
    pMovida = (Point) ub.getWayPoints().get(0);
    nuevoComando.setType("move");
    nuevoComando.setDestination(pMovida);
    //asesino.destino=(Point)asesino.getWayPoints().get(0);
//    destino=asesino.destino;
    nuevoComando.setUnitType(ub.getType());
/*    if (destino==null)
      return null;*/
   
    ub.setCommand(nuevoComando);
    return nuevoComando;
View Full Code Here

    //estadisticasTipoUnidad = estadisticasTipoUnidad;
 
 
 
  public ClientCommand idle(){
    ClientCommand cIdle = new ClientCommand();

     getJugador().incIdComando();//incremento el id
     cIdle.setId( getJugador().getIdComando());
     cIdle.setIdUnit(getId());
     cIdle.setType("idle");
     cIdle.setOwner(this);
     cIdle.setDestination(position);

    
     cIdle.setUnitType(this.getType());
     return cIdle;
  }
View Full Code Here

public class EstrategiaExplorador extends EstrategiaUnidad{

  @Override
  public ClientCommand accionDeTurno(UnidadBasica unidad) {
   
    ClientCommand nuevoComando=new ClientCommand();
    nuevoComando.setId(unidad.getJugador().getFortaleza().getIdComando());
    nuevoComando.setIdUnit(unidad.getId());
   
   
   
    int centroX=unidad.getPosition().getX();
    int centroY=unidad.getPosition().getY();
    int rango=unidad.getVision();
    int limiteIzquierdo=(centroX-rango)>=0 ? centroX-rango : 0;
    int limiteDerecho=(centroX+rango)<unidad.getJugador().getFortaleza().anchoMapa ? centroX+rango : unidad.getJugador().getFortaleza().anchoMapa-1;
    int limiteSuperior=(centroY-rango)>=0 ? centroY-rango : 0;
    int limiteInferior=(centroY+rango)<unidad.getJugador().getFortaleza().altoMapa ? centroY+rango : unidad.getJugador().getFortaleza().altoMapa-1;
    //primero marco todo en el rango de vision como descubierto
    boolean noSirve=true;
    for (int i = limiteIzquierdo; i<=limiteDerecho;i++  ){
      for (int j=limiteSuperior;j<=limiteInferior;j++){
        if (unidad.getPosition().distance(new Point(i,j))<=rango){
          if(!unidad.getJugador().getFortaleza().isPointAfuera(new Point(i,j))){
            MapElement meCandidato= unidad.getJugador().getFortaleza().mapa[i][j];
            if(meCandidato!= null && meCandidato.getClass().getName().equals("src.Enemigo") && ((Enemigo)meCandidato).getUltimoTurnoVisto()==unidad.getJugador().turno){
              if (((Enemigo)meCandidato).getType()==Vision.TYPE_ENEMY_COLLECTOR && ((Explorador)unidad).turnosSiguiendoColector<=Explorador.MAXIMO_TURNOS_SIGUIENDO_EXPLORADOR){
                noSirve=false;
                Point destino=new Point(i,j);
                if (unidad.destino==null || !destino.equals(unidad.destino)){
                  ((Explorador)unidad).turnosSiguiendoColector++; 
               
                }
                else{
                  Iterator itRecursos=unidad.getJugador().getFortaleza().resources.iterator();
                  noSirve=true;
                  while (itRecursos.hasNext()){
                    Mina mina=(Mina)itRecursos.next();
                    if (mina.getPosition().distance(destino)<=1){
                      noSirve=false;
                      break;
                    }
                  }
                }
                if (noSirve)
                  continue;
                unidad.setPeligrosidad(false);
                unidad.setDescubir(true);
                unidad.setARangoDeAccion(false);
                unidad.setWayPoints(Astar.intentoDePathFinding(destino, unidad, unidad.getJugador().getFortaleza()));
                unidad.destino=destino;
               
                nuevoComando.setType("move");
                nuevoComando.setDestination((Point)unidad.getWayPoints().get(0));
              }
            }
          }

        }
      }
    }
   

   
   
   
   
   
    if (noSirve && (unidad.getWayPoints()==null || unidad.getWayPoints().size()==0 ||((Point)unidad.getWayPoints().get(0)).distance(unidad.getPosition())<unidad.getMovementSpeed() || !Astar.verificarCamino(unidad))){
     
      ((Explorador)unidad).turnosSiguiendoColector=0;
      //genero lista de puntos no descubiertos, prioriza el lado enemigo si no conozco la fortaleza.
      NodoMapaEstadisticas[][] mapaDescubierto = unidad.getJugador().getFortaleza().estadisticas.mapaEstadistico;
      List nodosNoDescubiertos=new ArrayList();

      limiteIzquierdo=unidad.getJugador().getFortaleza().getId()==1 ? unidad.getJugador().getFortaleza().anchoMapa/2 : 0;
      limiteDerecho=unidad.getJugador().getFortaleza().getId()==1 ? unidad.getJugador().getFortaleza().anchoMapa : unidad.getJugador().getFortaleza().anchoMapa/2;
      limiteSuperior=0;
      limiteInferior=unidad.getJugador().getFortaleza().altoMapa;
     
      for (int i = limiteIzquierdo; i<limiteDerecho;i++  ){
        for (int j=limiteSuperior;j<limiteInferior;j++){
          if (!Fortaleza.isPointAfuera(new Point(i,j)) && !mapaDescubierto[i][j].isDescubierto())
            nodosNoDescubiertos.add(new Point(i,j));
        }
      }
      /*Point destino=unidad.getJugador().getFortaleza().getPosition();
      if (nodosNoDescubiertos.size()>0){
        int rnd;
        rnd = (int)(Math.random()*(nodosNoDescubiertos.size()-1));
        destino=(Point) nodosNoDescubiertos.get(rnd);
        System.out.println("Puntos no descubiertos : "+nodosNoDescubiertos.size());
      }// no va con random se pierde mucho*/
      int distancia=0;
      Point destino=null;
      Iterator it=nodosNoDescubiertos.iterator();
      while (it.hasNext()){
        Point punto=(Point)it.next();
     
        if ((distancia==0 || (unidad.getPosition().distance(punto)<=distancia))){             
          //(distancia==0 || (ub.getPosition().distance(new Point(i,j))+ub.getJugador().getFortaleza().getPosition().distance(new Point(i,j))<=distancia))){
          if (unidad.getPosition().distance(punto)==distancia){
            if (unidad.getJugador().getFortaleza().getPosition().distance(punto)<destino.distance(unidad.getJugador().getFortaleza().getPosition())){
              destino=punto;
              distancia=destino.distance(unidad.getPosition());
            }
          }
          else
          {
            destino=punto;
            distancia=destino.distance(unidad.getPosition());
          }
        }
      }
     
        unidad.setPeligrosidad(false);
        unidad.setDescubir(true);
        unidad.setARangoDeAccion(false);
        unidad.setWayPoints(Astar.intentoDePathFinding(destino, unidad, unidad.getJugador().getFortaleza()));
        unidad.destino=destino;
      }
   
    nuevoComando.setType("move");
    nuevoComando.setDestination((Point)unidad.getWayPoints().get(0));

    nuevoComando.setUnitType(unidad.getType());
    unidad.setCommand(nuevoComando);
    return nuevoComando;
  }
View Full Code Here

    ifguardian.enemigoEnRango() != null)
      //ATTACK!
    {
     
    Enemigo enemigo = guardian.enemigoEnRango();
    ClientCommand cAtaque =guardian.atacar(enemigo.getPosition());
    //comandos.add(nuevoComando);
    guardian.setCommand(cAtaque);
    return cAtaque;
    }
    else {//mover
View Full Code Here

  public int cantidadActividad=0;
  static public int perimetro=6;
  @Override
  public ClientCommand accionDeTurno(UnidadBasica unidad) {

    ClientCommand nuevoComando=new ClientCommand();
    //chequeo la vision
   
    int centroX=unidad.getPosition().getX();
    int centroY=unidad.getPosition().getY();
    int rango=unidad.getVision();
    boolean noSirve=true;

    boolean ampliarPerimetro=false;
    MapElement meEvaluado=null;
    //int debug=0;
    for(int y=unidad.getPosition().getY()-1;y<=unidad.getPosition().getY()+1;y++)
    {
      for(int x= unidad.getPosition().getX()-1;x<=unidad.getPosition().getX()+1;x++)
      {
        Point pEvaluado = new Point(x,y);
          if (!Fortaleza.isPointAfuera(pEvaluado))
            meEvaluado= Fortaleza.instanciaFortaleza.getElementoMapaEnPosicion(pEvaluado);
          if (meEvaluado != null && meEvaluado.getClass().getName().equals("src.Enemigo") && ((Enemigo)meEvaluado).getUltimoTurnoVisto()==Cliente.turno && meEvaluado.getType()==Vision.TYPE_ENEMY_ATTACKER)
         
            ampliarPerimetro=true;
      }
    }

    int limiteIzquierdo=(centroX-rango)>=0 ? centroX-rango : 0;
    int limiteDerecho=(centroX+rango)<unidad.getJugador().getFortaleza().anchoMapa ? centroX+rango : unidad.getJugador().getFortaleza().anchoMapa-1;
    int limiteSuperior=(centroY-rango)>=0 ? centroY-rango : 0;
    int limiteInferior=(centroY+rango)<unidad.getJugador().getFortaleza().altoMapa ? centroY+rango : unidad.getJugador().getFortaleza().altoMapa-1;
    System.out.println("Turnos siguiendo colector " +((Explorador)unidad).turnosSiguiendoColector);
   

    for (int i = limiteIzquierdo; i<=limiteDerecho;i++  ){
      for (int j=limiteSuperior;j<=limiteInferior;j++){
        if (unidad.getPosition().distance(new Point(i,j))<=rango){
          if(!unidad.getJugador().getFortaleza().isPointAfuera(new Point(i,j))
              && !(i>Fortaleza.fortalezaEnemiga.getPosition().getX()-perimetro
                  && i<unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition().getX()+perimetro
                  && j>unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition().getY()-perimetro
                  && j<unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition().getY()+perimetro)){
            MapElement meCandidato= unidad.getJugador().getFortaleza().mapa[i][j];
            if(meCandidato!= null && meCandidato.getClass().getName().equals("src.Enemigo")
              && ((Enemigo)meCandidato).getUltimoTurnoVisto()==unidad.getJugador().turno
              && ((Enemigo)meCandidato).getType()==Vision.TYPE_ENEMY_ATTACKER ){
              if (Fortaleza.instanciaFortaleza.getEstrategia().getClass().getName().equals("src.estrategias.EstrategiaEquilibrada") && ((EstrategiaEquilibrada)Fortaleza.instanciaFortaleza.getEstrategia()).numeroOleada==1){
                ((EstrategiaEquilibrada)Fortaleza.instanciaFortaleza.getEstrategia()).numeroOleada=2;
                Iterator it=Fortaleza.instanciaFortaleza.unidades.iterator();
                while (it.hasNext()){
                  UnidadBasica ub=(UnidadBasica)it.next();
                  if (ub.getTipoInternoUnidad()==UnidadBasica.TIPO_ASESINO && ub.getPosition().distance(Fortaleza.fortalezaEnemiga.getPosition())>10)
                    ((Asesino)ub).setEstrategia(new EstrategiaAsesinoColector());
                }
              }
            }
          }
        }
      }
    }
   
   
   
   
    for (int i = limiteIzquierdo; i<=limiteDerecho;i++  ){
      for (int j=limiteSuperior;j<=limiteInferior;j++){
        if (unidad.getPosition().distance(new Point(i,j))<=rango){
          if(!unidad.getJugador().getFortaleza().isPointAfuera(new Point(i,j)) && !(i>unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition().getX()-perimetro && i<unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition().getX()+perimetro && j>unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition().getY()-perimetro && j<unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition().getY()+perimetro)){
            MapElement meCandidato= unidad.getJugador().getFortaleza().mapa[i][j];
            if(meCandidato!= null && meCandidato.getClass().getName().equals("src.Enemigo")
              && ((Enemigo)meCandidato).getUltimoTurnoVisto()==unidad.getJugador().turno
              && ((Enemigo)meCandidato).getType()==Vision.TYPE_ENEMY_COLLECTOR ){
  //     
                noSirve=false;
                Point destino=new Point(i,j);
                if (unidad.destino==null || !destino.equals(unidad.destino)){
                  ((Explorador)unidad).turnosSiguiendoColector++; 
               
                }
                else{
                  ((Explorador)unidad).turnosSiguiendoColector=0;
                  Iterator itRecursos=unidad.getJugador().getFortaleza().resources.iterator();
                  noSirve=true;
                  while (itRecursos.hasNext()){
                    Mina mina=(Mina)itRecursos.next();
                    if (mina.getPosition().distance(destino)<=1){
                      noSirve=false;
                      break;
                    }
                  }
                }
                if (noSirve)
                  continue;
                unidad.setPeligrosidad(false);
                unidad.setDescubir(true);
                unidad.setARangoDeAccion(false);
                unidad.setWayPoints(Astar.intentoDePathFinding(destino, unidad, unidad.getJugador().getFortaleza()));
                unidad.destino=destino;
               
                nuevoComando.setId(unidad.getJugador().getIdComando());
                nuevoComando.setIdUnit(unidad.getId());
                nuevoComando.setUnitType(unidad.getType());
                nuevoComando.setType("move");
                nuevoComando.setDestination((Point)unidad.getWayPoints().get(0));
                unidad.setCommand(nuevoComando);
                return nuevoComando;
            }
          }
        }
View Full Code Here

      unidad.setDescubir(false);
      unidad.setARangoDeAccion(false);
      unidad.setWayPoints(Astar.intentoDePathFinding(unidad.destino, unidad, unidad.getJugador().getFortaleza()));
      unidad.destino=unidad.destino;
    }
    ClientCommand nuevoComando=new ClientCommand();
    nuevoComando.setId(unidad.getJugador().getIdComando());
    nuevoComando.setIdUnit(unidad.getId());
    nuevoComando.setType("move");
    nuevoComando.setDestination((Point)unidad.getWayPoints().get(0));
    nuevoComando.setUnitType(unidad.getType());
    unidad.setCommand(nuevoComando);

    return nuevoComando;
  }
View Full Code Here

public class EstrategiaExploracionEspiral extends EstrategiaUnidad{

  @Override
  public ClientCommand accionDeTurno(UnidadBasica ub) {
   
    ClientCommand nuevoComando=new ClientCommand();
    if (ub.getWayPoints()==null || ub.getWayPoints().size()==0 ||((Point)ub.getWayPoints().get(0)).distance(ub.getPosition())<ub.getMovementSpeed() || !Astar.verificarCamino(ub)){
     
      int distancia=0;
      Point destino=null;
      for (int i=0;i<ub.getJugador().getFortaleza().anchoMapa;i++){
        for (int j=0;j<ub.getJugador().getFortaleza().altoMapa;j++){
         
          /*
          if (!ub.getJugador().getFortaleza().estadisticas.isPosicionDescubierta(i, j) &&
              (distancia==0 || (ub.getJugador().getFortaleza().getPosition().distance(new Point(i,j))<=distancia))){             
              //(distancia==0 || (ub.getPosition().distance(new Point(i,j))+ub.getJugador().getFortaleza().getPosition().distance(new Point(i,j))<=distancia))){
            if (ub.getJugador().getFortaleza().getPosition().distance(new Point(i,j))==distancia){
              if (ub.getPosition().distance(new Point(i,j) )<destino.distance(ub.getJugador().getFortaleza().getPosition())){
                destino=new Point(i,j);
                distancia=destino.distance(ub.getPosition());
              }
            }
            else
            {
              destino=new Point(i,j);
              distancia=destino.distance(ub.getPosition());
            }
          }*/

         
          if (!ub.getJugador().getFortaleza().estadisticas.isPosicionDescubierta(i, j) &&
              (distancia==0 || (ub.getPosition().distance(new Point(i,j))<=distancia))){             
              //(distancia==0 || (ub.getPosition().distance(new Point(i,j))+ub.getJugador().getFortaleza().getPosition().distance(new Point(i,j))<=distancia))){
            if (ub.getPosition().distance(new Point(i,j))==distancia){
              if (ub.getJugador().getFortaleza().getPosition().distance(new Point(i,j) )<destino.distance(ub.getJugador().getFortaleza().getPosition())){
                destino=new Point(i,j);
                distancia=destino.distance(ub.getPosition());
              }
            }
            else
            {
              destino=new Point(i,j);
              distancia=destino.distance(ub.getPosition());
            }
          }
        }
      }
      if (destino!=null){
        ub.setPeligrosidad(false);
        ub.setDescubir(true);
        ub.setARangoDeAccion(false);
        ub.setWayPoints(Astar.intentoDePathFinding(destino, ub, ub.getJugador().getFortaleza()));
        ub.destino=destino;
      }
      else{
        return null;
      }


    }
   
    nuevoComando.setType("move");
    nuevoComando.setDestination((Point)ub.getWayPoints().get(0));
    nuevoComando.setId(ub.getJugador().getIdComando());
    nuevoComando.setIdUnit(ub.getId());
    nuevoComando.setUnitType(ub.getType());
    ub.setCommand(nuevoComando);
    return nuevoComando;
  }
View Full Code Here

  @Override
  public ClientCommand accionDeTurno(UnidadBasica unidad) {
   
    if (unidad.getCommand()==null){
        ClientCommand nuevoComando=new ClientCommand()
        nuevoComando.setId(unidad.getJugador().getIdComando());
        nuevoComando.setIdUnit(unidad.getId());
       
        if (unidad.getWayPoints()!=null &&unidad.getWayPoints().size()>0){
       
          nuevoComando.setType("move");
          nuevoComando.setDestination((Point)unidad.getWayPoints().get(0));
          nuevoComando.setUnitType(unidad.getType());
          unidad.setCommand(nuevoComando);
          return nuevoComando;
        }

       
        if (unidad.resourcesStored()<unidad.getMaxLoad()){//recolecto
          //calculo mina
          Set recursos=unidad.getJugador().getFortaleza().getKnownResources();
          Iterator it2= recursos.iterator();
          int distancia=99999;
          Mina minaCercana=new Mina();
          while (it2.hasNext()){
            Mina recurso=(Mina)it2.next();
            if (!recurso.isMaxedOut()
                && recurso.getPosition().distance(unidad.getPosition())+Math.max(Fortaleza.instanciaFortaleza.estadisticas.mapaEstadistico[recurso.getPosition().getX()][recurso.getPosition().getY()].getPeligrosidad(),0)<distancia
                && (recurso.resourcesStored()<unidad.getJugador().getFortaleza().resourcesPayload || unidad.getJugador().getFortaleza().resourcesPayload==0)){//chequear capacidad de mina
              minaCercana.setPosition(recurso.getPosition());
              distancia=minaCercana.getPosition().distance(unidad.getPosition());
            }
          }
         
          if (minaCercana.getPosition()!=null){
            if (unidad.getPosition().distance(minaCercana.getPosition())<=unidad.getActionRange()){
              nuevoComando.setType("collect");
              nuevoComando.setDestination(minaCercana.getPosition());
            }
            else//voy a la mina mas cercana, similiar al de la fortaleza, refactorizar
            {
             
              if (unidad.getWayPoints()==null || unidad.getWayPoints().size()==0 || !Astar.verificarCamino(unidad)){
                unidad.setPeligrosidad(true);
                unidad.setDescubir(false);
                unidad.setARangoDeAccion(true);
                unidad.setWayPoints(Astar.intentoDePathFinding(minaCercana.getPosition(), unidad, unidad.getJugador().getFortaleza()));

                unidad.destino=minaCercana.getPosition();
              }
             
              nuevoComando.setType("move");
              nuevoComando.setDestination((Point)unidad.getWayPoints().get(0));
            }
            nuevoComando.setUnitType(unidad.getType());
            unidad.setCommand(nuevoComando);
            return nuevoComando;
          }
        }
        if (unidad.resourcesStored()!=0){
          if (unidad.getPosition().distance(unidad.getJugador().getFortaleza().getPosition())<=unidad.getActionRange()){ // deposito en la fortaleza
            nuevoComando.setType("collect");
            nuevoComando.setDestination(unidad.getJugador().getFortaleza().getPosition());
          }
          else// voy a la fortaleza
          {
            if (unidad.getWayPoints()==null || unidad.getWayPoints().size()==0 || !Astar.verificarCamino(unidad)){
              unidad.setPeligrosidad(true);
              unidad.setDescubir(false);
              unidad.setARangoDeAccion(true);
              unidad.setWayPoints(Astar.intentoDePathFinding(unidad.getJugador().getFortaleza().getPosition(), unidad, unidad.getJugador().getFortaleza()));
              unidad.destino=unidad.getJugador().getFortaleza().getPosition();
            }
            nuevoComando.setType("move");
            nuevoComando.setDestination((Point)unidad.getWayPoints().get(0));
          }
          nuevoComando.setUnitType(unidad.getType());
          unidad.setCommand(nuevoComando);
          return nuevoComando;
        }
      }
    return null;
View Full Code Here

TOP

Related Classes of com.gameloftProgrammersCup.client.ClientCommand

Copyright © 2018 www.massapicom. 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.