Package com.gameloftProgrammersCup.clientInterfaces

Examples of com.gameloftProgrammersCup.clientInterfaces.Point


      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;
                }
              }
View Full Code Here


          && invalido.getPosition().getX()==ub.destino.getX()
          && invalido.getPosition().getY()==ub.destino.getY())
            itInvalidos.remove();
    }
    while (itWayPoints.hasNext() && !caminoInvalido){
      Point wayPoint=(Point)itWayPoints.next();
      puntoInvalido=false;
      List puntosIntermedios=new ArrayList();
      int desplazamientoX=wayPoint.getX()-centroX;
      int desplazamientoY=wayPoint.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(wayPoint.getX()-diagonalX*cantidadDiagonalesExactas,wayPoint.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 puntoIntermedio=(Point)it2.next();
          if (invalido.getPosition().equals(puntoIntermedio)){
            puntoInvalido=true;
            break;
          }
        }
View Full Code Here

    int limiteSuperior=(centroY-rango)>=0 ? centroY-rango : 0;
    int limiteInferior=(centroY+rango)<altoMapa ? centroY+rango : altoMapa+1;
    //primero marco todo en el rango de vision como descubierto
    for (int i = limiteIzquierdo; i<=limiteDerecho;i++  ){
      for (int j=limiteSuperior;j<=limiteInferior;j++){
        if (unidad.getPosition().distance(new Point(i,j))<=rango){
          {
          if(!isPointAfuera(new Point(i,j)))
            {
            if (!Estadisticas.mapaEstadistico[i][j].isDescubierto())
              unidad.addPosicionesDescubiertas(1);
            Estadisticas.mapaEstadistico[i][j].marcarComoDescubierto(Cliente.turno);
            }
View Full Code Here

   * devuelve un punto cualquiera adentro del radio de seguridad, que no sea fortaleza ni est ocupado ni caiga afuera
   */
  public Point puntoRandomEnRadioSeguridad(){
    int xOffset = (int)Math.round(Math.random() * radioSeguridad);
    int yOffset = (int)Math.round(Math.random() * radioSeguridad);
    if((!isPointAfuera(new Point(this.position.getX() + xOffset,this.position.getY()+ yOffset))&&(this.mapa[position.getX() + xOffset][position.getY()+ yOffset]==null)))
        return new Point(this.position.getX() + xOffset, position.getY()+ yOffset);
    else if ((!isPointAfuera(new Point(this.position.getX() - xOffset,this.position.getY()+ yOffset))&&(this.mapa[position.getX() - xOffset][position.getY()+ yOffset]==null)))
        return new Point(this.position.getX() - xOffset, position.getY()+ yOffset);
    else if ((!isPointAfuera(new Point(this.position.getX() + xOffset,this.position.getY()-yOffset))&&(this.mapa[position.getX() + xOffset][position.getY()- yOffset]==null)))
        return new Point(this.position.getX() + xOffset, position.getY()- yOffset);
    else if ((!isPointAfuera(new Point(this.position.getX() - xOffset,this.position.getY()-yOffset))&&(this.mapa[position.getX() - xOffset][position.getY()- yOffset]==null)))
      return new Point(this.position.getX() - xOffset, position.getY()- yOffset);
    else return puntoRandomEnRadioSeguridad();//y si, si no sabes que hacer... llamala de nuevo
   
  }
View Full Code Here

      //buscar otro camino
      if (this.destino==null && this.wayPoints!=null && this.wayPoints.size()>1){
        System.out.println("Jodido");
      }
      if (this.wayPoints!=null && this.wayPoints.size()>0){
        Point wayPoint=(Point)this.wayPoints.get(0);
        int centroX=this.getPosition().getX();
        int centroY=this.getPosition().getY();
        int desplazamientoX=wayPoint.getX()-centroX;
        int desplazamientoY=wayPoint.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);
        Mina obstaculo;
        while (desplazamientoX>0){//es uno u el otro
          obstaculo=new Mina();
          obstaculo.setPosition(new Point(centroX+desplazamientoX*diagonalX,centroY));
          obstaculos.add(obstaculo);
          desplazamientoX--;
        }
        while (desplazamientoY>0){//es uno u el otro
          obstaculo=new Mina();
          obstaculo.setPosition(new Point(centroX,centroY+desplazamientoY*diagonalY));
          obstaculos.add(obstaculo);
          desplazamientoY--;
       
        while (cantidadDiagonalesExactas>0){
          obstaculo=new Mina();
          obstaculo.setPosition(new Point(wayPoint.getX()-diagonalX*cantidadDiagonalesExactas,wayPoint.getY()-diagonalY*cantidadDiagonalesExactas));
          cantidadDiagonalesExactas--;
          obstaculos.add(obstaculo);
        }
        this.setCommand(null);
        this.wayPoints.clear();
 
View Full Code Here

  public void setGCost(UnidadBasica unidad, List intermedios) {
    int costo=0;
    Iterator it=intermedios.iterator();
    while (it.hasNext()){
      Point punto=(Point)it.next();
      if (unidad.isDescubir())
        costo=costo-(unidad.getJugador().getFortaleza().estadisticas.mapaEstadistico[punto.getX()][punto.getY()].isDescubierto() ? 0 : 2);
      if (unidad.isPeligrosidad())
        costo=costo+Math.max(unidad.getJugador().getFortaleza().estadisticas.mapaEstadistico[punto.getX()][punto.getY()].getPeligrosidad(),0);
    }
    if (costo>0){
      //System.out.println("prueba"+costo);
    }
     
View Full Code Here

   
    if (asesino.enemigoEnRango()!=null){
      //ATTACK!
      Enemigo enemigo = asesino.enemigoEnRango();
      if (enemigo.getPosition().distance(asesino.getPosition())>asesino.getActionRange()){//tengo que acercarme
        Point destino=enemigo.getPosition();
        ClientCommand nuevoComando=new ClientCommand()
        nuevoComando.setId(asesino.getJugador().getIdComando());
        nuevoComando.setIdUnit(asesino.getId());
        asesino.setPeligrosidad(false);
        asesino.setDescubir(false);
        asesino.setARangoDeAccion(true);
        asesino.setWayPoints(Astar.intentoDePathFinding(destino, asesino, asesino.getJugador().getFortaleza()));
        asesino.destino=destino;
        nuevoComando.setType("move");
        nuevoComando.setDestination((Point)asesino.getWayPoints().get(0));
        asesino.destino=(Point)asesino.getWayPoints().get(0);
        nuevoComando.setUnitType(asesino.getType());
        asesino.setCommand(nuevoComando);
        return nuevoComando;
      }//sino ataco
      ClientCommand cAtaque =asesino.atacar(enemigo.getPosition());
      asesino.setCommand(cAtaque);
      return cAtaque;
    }
    else
    {//move
        Point destino=null;
          if (Fortaleza.instanciaFortaleza.fortalezaEnemiga==null ){
            ClientCommand nuevoComando=new ClientCommand();
            nuevoComando.setId(asesino.getJugador().getIdComando());
            nuevoComando.setIdUnit(asesino.getId());
            destino=new Point(Fortaleza.anchoMapa/2,Fortaleza.altoMapa/2);
            if (asesino.destino==null || asesino.getWayPoints()==null || asesino.getWayPoints().size()==0 || !Astar.verificarCamino(asesino)){
              asesino.setPeligrosidad(false);
              asesino.setDescubir(false);
              asesino.setARangoDeAccion(false);
              asesino.setWayPoints(Astar.intentoDePathFinding(destino, asesino, asesino.getJugador().getFortaleza()));
View Full Code Here

   
    int perimetroExteriorX=perimetroX;
    int perimetroExteriorY=perimetroY;
    //int perimetroInterior=9;
    boolean afuera=true;
    Point destino=null;
    if (waypoints.size()==0){
      int centroX=centro.getX();
      int centroY=centro.getY();
      // Arma los punto. El -5 es porque no tiene sentido que pase tan cerca del borde, le da un margen
      int limiteIzquierdo=(centroX-perimetroExteriorX)>=0 ? centroX-perimetroExteriorX : 0;
      int limiteDerecho=(centroX+perimetroExteriorX)<unidad.getJugador().getFortaleza().anchoMapa-5 ? centroX+perimetroExteriorX : unidad.getJugador().getFortaleza().anchoMapa-1;
      int limiteSuperior=(centroY-perimetroExteriorY)>=0 ? centroY-perimetroExteriorY : 0;
      int limiteInferior=(centroY+perimetroExteriorY)<unidad.getJugador().getFortaleza().altoMapa-5 ? centroY+perimetroExteriorY : unidad.getJugador().getFortaleza().altoMapa-1;
     
 
      Point waypoint1=new Point (limiteDerecho,limiteSuperior);
      Point waypoint2=new Point (limiteDerecho,limiteInferior);
      Point waypoint3=new Point (limiteIzquierdo,limiteInferior);
      Point waypoint4=new Point (limiteIzquierdo,limiteSuperior);
      //Chequeo para ver si algun way queda afuera, si es una esquina me quedan solo 3 ways
      if (Math.abs(waypoint1.getX()-centroX)==perimetroExteriorX || Math.abs(waypoint1.getY()-centroY)==perimetroExteriorY)
        waypoints.add(waypoint1);
      if (Math.abs(waypoint2.getX()-centroX)==perimetroExteriorX || Math.abs(waypoint2.getY()-centroY)==perimetroExteriorY)
        waypoints.add(waypoint2);
      if (Math.abs(waypoint3.getX()-centroX)==perimetroExteriorX || Math.abs(waypoint3.getY()-centroY)==perimetroExteriorY)
        waypoints.add(waypoint3);
      if (Math.abs(waypoint4.getX()-centroX)==perimetroExteriorX || Math.abs(waypoint4.getY()-centroY)==perimetroExteriorY)
        waypoints.add(waypoint4);
     
      //armo la secuencia de los ways
      if (waypoints.size()==3){
        //el 0 es el del medio
        if ((((Point)waypoints.get(0)).getX() == ((Point)waypoints.get(1)).getX() && ((Point)waypoints.get(0)).getY() == ((Point)waypoints.get(2)).getY())
            || (((Point)waypoints.get(0)).getX() == ((Point)waypoints.get(2)).getX() && ((Point)waypoints.get(0)).getY() == ((Point)waypoints.get(1)).getY())){
          Point punto=(Point)waypoints.remove(0);
          waypoints.add(1,punto);
          waypoints.add(punto);
        }
        //el 1 es el del medio
        if ((((Point)waypoints.get(1)).getX() == ((Point)waypoints.get(2)).getX() && ((Point)waypoints.get(1)).getY() == ((Point)waypoints.get(0)).getY())
            || (((Point)waypoints.get(1)).getX() == ((Point)waypoints.get(0)).getX() && ((Point)waypoints.get(1)).getY() == ((Point)waypoints.get(2)).getY())){
          Point punto=(Point)waypoints.remove(1);
          waypoints.add(1,punto);
          waypoints.add(punto);
        }
        //el 2 es el del medio
        if ((((Point)waypoints.get(2)).getX() == ((Point)waypoints.get(0)).getX() && ((Point)waypoints.get(2)).getY() == ((Point)waypoints.get(1)).getY())
            || (((Point)waypoints.get(2)).getX() == ((Point)waypoints.get(1)).getX() && ((Point)waypoints.get(2)).getY() == ((Point)waypoints.get(0)).getY())){
          Point punto=(Point)waypoints.remove(2);
          waypoints.add(1,punto);
          waypoints.add(punto);
        }
      }
     
      else{
      //armo la secuencia de los ways
        if (limiteIzquierdo!=centroX-perimetroExteriorX){
          //orden de los way
          //123214
          waypoints.add(3,waypoints.get(0));
          waypoints.add(3,waypoints.get(1));
        }
        if (limiteDerecho!=centroX+perimetroExteriorX){
          //143234
          waypoints.add(1,waypoints.get(waypoints.size()-2));
          waypoints.add(1,waypoints.get(waypoints.size()-1));
        }
        if (limiteSuperior!=centroY-perimetroExteriorY){
          //123432
          waypoints.add(waypoints.get(2));
          waypoints.add(waypoints.get(1));     
        }
        if (limiteInferior!=centroY+perimetroExteriorY){
          //121434
          waypoints.add(2,waypoints.get(waypoints.size()-1));
          waypoints.add(2,waypoints.get(0));
        }
      }
      Iterator it=waypoints.iterator();
      while (it.hasNext()){
        Point punto=(Point)it.next();
        if (destino==null || punto.distance(unidad.getPosition())<destino.distance(unidad.getPosition())){
          destino=punto;
        }
      }
      unidad.destino=destino;
    }
   
    if (unidad.getWayPoints()==null || unidad.getWayPoints().size()==0 || !Astar.verificarCamino(unidad)){
      Iterator it=waypoints.iterator();
      while (it.hasNext()){
        Point punto=(Point)it.next();
        if (destino==null || punto.distance(unidad.getPosition())<destino.distance(unidad.getPosition())){
          destino=punto;
        }
      }
      if (orden<0 && destino.distance(unidad.getPosition())<3){
        orden=waypoints.indexOf(destino);
View Full Code Here

    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())){
View Full Code Here

    //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;
            }
          }
        }
      }
    }
    if (noSirve){
      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)){//adentro del perimetro, espero a que salga
             
              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
                && ((Explorador)unidad).turnosSiguiendoColector<=Explorador.MAXIMO_TURNOS_SIGUIENDO_EXPLORADOR){
                 
                  if (!((unidad.getPosition().getX()>unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition().getX()-perimetro && unidad.getPosition().getX()<unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition().getX()+perimetro && unidad.getPosition().getY()>unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition().getY()-perimetro && unidad.getPosition().getY()<unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition().getY()+perimetro))){
                    noSirve=false;
                    ((Explorador)unidad).turnosSiguiendoColector++;
                    nuevoComando=null;
                  }
              }
            }
          }
        }
      }
    }
    if (ampliarPerimetro)
      perimetro=perimetro+2;

    if (noSirve){
        if (((Explorador)unidad).turnosSiguiendoColector>0)
          System.out.println("Aborto seguimiento");
        ((Explorador)unidad).turnosSiguiendoColector=0
        Point centro=unidad.getJugador().getFortaleza().fortalezaEnemiga.getPosition();
        nuevoComando=pasearPorPerimetro(unidad,perimetro,perimetro,centro);
    }
   
    return nuevoComando;
   
View Full Code Here

TOP

Related Classes of com.gameloftProgrammersCup.clientInterfaces.Point

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.