Package com.gameloftProgrammersCup.clientInterfaces

Examples of com.gameloftProgrammersCup.clientInterfaces.MapElement


    while (itVision.hasNext()){
      Vision vision=(Vision) itVision.next();
      boolean duplicado=false;
      Iterator itrecursos = resources.iterator();
      while (itrecursos.hasNext()){
        MapElement recurso= (MapElement) itrecursos.next();
        if (vision.getPosition().equals(recurso.getPosition()))
          duplicado=true;
      }
      if (!duplicado){
       
        if (Vision.TYPE_RESOURCE==vision.getType()){
View Full Code Here


    while (it.hasNext()){
      Vision vision = (Vision) it.next();
      //hay que convertir el tipo porque son distintos para el vision, para el elementMap 
      //primero chequear si ya estaba descubierto
     
      MapElement elementoMapa=null;
     
      switch (vision.getType()){
      case (Vision.TYPE_ALLY):
        /*if (vision.getPosition().equals(this.position)){
          elementoMapa=this;
          break;
        }
        Iterator it2=unidades.iterator();
        while (it2.hasNext()){
          UnidadBasica aliado=(UnidadBasica)it2.next();
          if (aliado.getPosition()!=null && vision.getPosition().equals(aliado.getPosition())){
            elementoMapa=aliado;
            break;
          }
        }*/
        break;
      case (Vision.TYPE_RESOURCE):
        Iterator it3=this.getKnownResources().iterator();
        while (it3.hasNext()){
          Mina mina=(Mina)it3.next();
          if (vision.getPosition().equals(mina.getPosition())){
            elementoMapa=mina;
            break;
          }
        }
        break;
      default: //enemigo!
        if (vision.getType()==Vision.TYPE_ENEMY_FORTRESS && fortalezaEnemiga==null){
          fortalezaEnemiga=new FortalezaEnemiga(vidaInicial,jugador.turno);
          fortalezaEnemiga.setPosition(vision.getPosition());
        }
       
       
       
       
        MapElement meCandidato= mapa[vision.getPosition().getX()][vision.getPosition().getY()];
        if(meCandidato!= null && meCandidato.getClass().getName().equals("src.Enemigo"))
          {
          ((Enemigo)meCandidato).setUltimoTurnoVisto(jugador.turno);//en el mismo lugar, asumo que es el mismo enemigo y actualizo
          elementoMapa = meCandidato;
          Iterator it4=enemigos.iterator();
          boolean estabaEnLista=false;
          while (it4.hasNext()){
            Enemigo enemigoIt=(Enemigo)it4.next();
            if (enemigoIt.getPosition()!=null && enemigoIt.getPosition().equals(meCandidato.getPosition())){
              estabaEnLista=true;
              break;
            }
          }
          if (!estabaEnLista){
View Full Code Here

    puntosInvalidos.addAll(fortaleza.enemigos);
    puntosInvalidos.addAll(obstaculos);
    puntosInvalidos.add(fortaleza);
    Iterator itInvalidos=puntosInvalidos.iterator();
    while (itInvalidos.hasNext()){
      MapElement invalido=(MapElement)itInvalidos.next();
      if (invalido.getPosition()==null){
        System.out.println("jodido");
        itInvalidos.remove();
      }
      else if (invalido.getPosition().getX()==destino.getX() && invalido.getPosition().getY()==destino.getY())
        itInvalidos.remove();
    }
   
   
   
   
    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)
View Full Code Here

    puntosInvalidos.addAll(ub.getJugador().getFortaleza().enemigos);
    puntosInvalidos.add(ub.getJugador().getFortaleza());
    Iterator itInvalidos=puntosInvalidos.iterator();
    boolean caminoInvalido=false;
    while (itInvalidos.hasNext()){
      MapElement invalido=(MapElement)itInvalidos.next();
      //agregu� el destino != null
      if (invalido.getPosition()==null){
          System.out.println("jodido");
          itInvalidos.remove();
      }
      else if (ub.destino!= null
          && 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;
          }
        }
        if (puntoInvalido){
View Full Code Here

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

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

      for(int x= position.getX()-vision;x<=position.getX()+vision;x++)
      {
        Point pEvaluado = new Point(x,y);
        if(!jugador.getFortaleza().isPointAfuera(pEvaluado)&& pEvaluado.distance(position)<=vision)
        {
          MapElement meEvaluado = jugador.getFortaleza().getElementoMapaEnPosicion(pEvaluado);
          if (meEvaluado != null && meEvaluado.getClass().getName().equals("src.Enemigo") && ((Enemigo)meEvaluado).getUltimoTurnoVisto()==this.getJugador().turno )
         
            return (Enemigo)meEvaluado;
        }
      }
    }
View Full Code Here

TOP

Related Classes of com.gameloftProgrammersCup.clientInterfaces.MapElement

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.