コード例 #1
0
 /**
  * @param c1
  * @param c2
  * @return un tablero en donde se intercambiarion los caramelos de c1 y c2
  */
 public Tablero swapCaramelos(Coordenada c1, Coordenada c2) {
   String col1 = this.colorCarameloEn(c1);
   String col2 = this.colorCarameloEn(c2);
   this.getCaramelos()[c1.getFila()][c1.getColumna()].setColor(col2);
   this.getCaramelos()[c2.getFila()][c2.getColumna()].setColor(col1);
   return this;
 }
コード例 #2
0
ファイル: Coordenada.java プロジェクト: cmorenogg/alsigm
 public synchronized boolean equals(java.lang.Object obj) {
   if (!(obj instanceof Coordenada)) return false;
   Coordenada other = (Coordenada) obj;
   if (obj == null) return false;
   if (this == obj) return true;
   if (__equalsCalc != null) {
     return (__equalsCalc == obj);
   }
   __equalsCalc = obj;
   boolean _equals;
   _equals =
       super.equals(obj) && this.coordX == other.getCoordX() && this.coordY == other.getCoordY();
   __equalsCalc = null;
   return _equals;
 }
コード例 #3
0
 @Override
 public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((coordenada == null) ? 0 : coordenada.hashCode());
   result = prime * result + ((direcao == null) ? 0 : direcao.hashCode());
   return result;
 }
コード例 #4
0
  /**
   * @param t
   * @param c
   * @return
   */
  public boolean explotaHorizontal(Tablero t, Coordenada c) {
    List<Movimiento> izq1 = new ArrayList<Movimiento>();
    izq1.add(new Izquierda());
    List<Movimiento> izq2 = new ArrayList<Movimiento>();
    izq2.add(new Izquierda());
    izq2.add(new Izquierda());
    List<Movimiento> der1 = new ArrayList<Movimiento>();
    der1.add(new Derecha());
    List<Movimiento> der2 = new ArrayList<Movimiento>();
    der2.add(new Derecha());
    der2.add(new Derecha());

    Coordenada izq = c.coordenadaResultante(izq1);
    Coordenada izqIzq = c.coordenadaResultante(izq2);
    Coordenada der = c.coordenadaResultante(der1);
    Coordenada derDer = c.coordenadaResultante(der2);

    return this.explosionHacia(t, c, izq, izqIzq)
        || this.explosionHacia(t, c, der, derDer)
        || this.explosionHacia(t, c, izq, der);
  }
コード例 #5
0
  /**
   * @param t
   * @param c
   * @return devuelve si se genero una explosión en sentido vertical u horizontal dependiendo de los
   *     parametros
   */
  public boolean explotaVertical(Tablero t, Coordenada c) {
    List<Movimiento> arriba1 = new ArrayList<Movimiento>();
    arriba1.add(new Arriba());
    List<Movimiento> arriba2 = new ArrayList<Movimiento>();
    arriba2.add(new Arriba());
    arriba2.add(new Arriba());
    List<Movimiento> abajo1 = new ArrayList<Movimiento>();
    abajo1.add(new Abajo());
    List<Movimiento> abajo2 = new ArrayList<Movimiento>();
    abajo2.add(new Abajo());
    abajo2.add(new Abajo());

    Coordenada arr = c.coordenadaResultante(arriba1);
    Coordenada arrArr = c.coordenadaResultante(arriba2);
    Coordenada aba = c.coordenadaResultante(abajo1);
    Coordenada abaAba = c.coordenadaResultante(abajo2);

    return this.explosionHacia(t, c, arr, arrArr)
        || this.explosionHacia(t, c, aba, abaAba)
        || this.explosionHacia(t, c, arr, aba);
  }
コード例 #6
0
 @Override
 public boolean equals(Object obj) {
   if (this == obj) return true;
   if (obj == null) return false;
   if (getClass() != obj.getClass()) return false;
   PosicaoVetorial other = (PosicaoVetorial) obj;
   if (coordenada == null) {
     if (other.coordenada != null) return false;
   } else if (!coordenada.equals(other.coordenada)) return false;
   if (direcao != other.direcao) return false;
   return true;
 }
コード例 #7
0
ファイル: Senal.java プロジェクト: Kevinarb/I-love-Trains
 public String toString() {
   Coordenada pos = this.posicion;
   return "Senal " + pos.toString();
 }
コード例 #8
0
 public void testExplosionHaciaCasoFalse() {
   Coordenada cor2 = new Coordenada(2, 2);
   Coordenada vec1 = cor2.coordenadaResultante(vecino1);
   Coordenada vec2 = cor2.coordenadaResultante(vecino2);
   Assert.assertFalse(explosion.explosionHacia(t, cor2, vec1, vec2));
 }
コード例 #9
0
 public void testExplosionHaciaCasoTrue() {
   Coordenada vec1 = cor.coordenadaResultante(vecino1);
   Coordenada vec2 = cor.coordenadaResultante(vecino2);
   Assert.assertTrue(explosion.explosionHacia(t, cor, vec1, vec2));
 }
コード例 #10
0
  /** @param contorno */
  public void addContorno(Contorno contorno) {
    // Conseguimos los punto a, b (bounding box del contorno)
    Coordenada a = null, b = null;
    {
      Iterator<Coordenada> it = contorno.getCoordenadas().iterator();
      while (it.hasNext()) {
        Coordenada c = it.next();
        if (a == null || b == null) {
          a = c.clone();
          b = c.clone();
        } else {
          if (a.getLatitud() > c.getLatitud()) {
            a.setLatitud(c.getLatitud());
          }
          if (a.getLongitud() > c.getLongitud()) {
            a.setLongitud(c.getLongitud());
          }
          if (b.getLatitud() < c.getLatitud()) {
            b.setLatitud(c.getLatitud());
          }
          if (b.getLongitud() < c.getLongitud()) {
            b.setLongitud(c.getLongitud());
          }
        }
      }
      // Normalizamos las coordenadas
      //            a.setLatitud(a.getLatitud()+90);
      //            a.setLongitud(b.getLongitud()+180);
      //            b.setLatitud(a.getLatitud()+90);
      //            b.setLongitud(b.getLongitud()+180);
      //            System.out.println("Bounding box: " + a + ", " + b);
    }

    // Añadimos las cuadriculas a las que el bounding box pertenece
    int ai = (int) ((a.getLongitud() + 180.0) / this.tamanoCuadricula);
    int aj = (int) ((a.getLatitud() + 90.0) / this.tamanoCuadricula);
    int bi = (int) ((b.getLongitud() + 180.0) / this.tamanoCuadricula);
    int bj = (int) ((b.getLatitud() + 90.0) / this.tamanoCuadricula);
    //        System.out.println("Bounding box local: (" + ai + ", " + aj + "), ("
    //                + bi + ", " + bj +")");
    for (int i = ai; i <= bi; ++i) {
      for (int j = aj; j <= bj; ++j) {
        // System.out.println("Contorno " + contorno + " añadido en (" +
        //        i + ", " + j + ")");
        contorno.addCuadricula(this.getCuadricula(i, j));
        this.getCuadricula(i, j).addContorno(contorno);
      }
    }
  }
コード例 #11
0
 public ArrayList<Contorno> calculaPosiblesContornos(Coordenada c) {
   int x = (int) Math.floor(((c.getLongitud() + 180) % 180) / this.tamanoCuadricula);
   int y = (int) Math.floor(((c.getLatitud() + 90) % 90) / this.tamanoCuadricula);
   return this.conjuntoCuadricula.get(x).get(y).getContornos();
 }
コード例 #12
0
 /**
  * Devuelve la cuadricula que contiene c (en posicion global)
  *
  * @param c Coordenada
  * @return Cuadricula que contiene la coordenada c
  */
 public Cuadricula getCuadricula(Coordenada c) {
   int i = (int) ((c.getLongitud() + 180.0) / this.tamanoCuadricula);
   int j = (int) ((c.getLatitud() + 90.0) / this.tamanoCuadricula);
   return this.getCuadricula(i, j);
 }
コード例 #13
0
 @Override
 public String toString() {
   return coordenada.toString() + " " + direcao.getToken();
 }
コード例 #14
0
 /**
  * @param c
  * @param col cambia el color del caramelo en c por el color col
  */
 public void cambiarColorCaramelo(Coordenada c, String col) {
   this.getCaramelos()[c.getFila()][c.getColumna()].setColor(col);
 }
コード例 #15
0
 /**
  * @param c
  * @return devuelve true si la coordenada c esta contenida en el tablero
  */
 public boolean incluidoEnTablero(Coordenada c) {
   return (c.getFila() >= 0 && c.getFila() < this.getAlto())
       && (c.getColumna() >= 0 && c.getColumna() < this.getAncho());
 }
コード例 #16
0
 /**
  * @return devuelve el color del caramelo en la posición a la que se llega siguiendo la lista de
  *     movimientos. Si la posición se sale del tablero devuelve " ".
  */
 public String colorCarameloEn(Coordenada c) {
   return (this.incluidoEnTablero(c))
       ? this.getCaramelos()[c.getFila()][c.getColumna()].getColor()
       : " ";
 }