public void generarCuadro() { this.tamano = 0; Random r = new Random(); int aux = r.Next(3 + (this.tamano)); while (aux < 4) { if (this.principal == null) { Cuadro cuadro = new Cuadro(); cuadro.getPosicion().setX(0); cuadro.getPosicion().setY(0); cuadro.setIndice(this.tamano); this.principal = cuadro; } else { Cuadro cuadro = new Cuadro(); this.tamano += 1; cuadro.setIndice(this.tamano); this.principal.combinar(cuadro, 0, 0); } if (this.tamano == 4) { aux = 5; } else { aux = r.Next(3 + (this.tamano)); } } }
public void unir(ConjuntoCuadrado conjunto1, ConjuntoCuadrado conjunto2) { List <Cuadro> visitados = new List <Cuadro>(); List <Posicion> posiciones1 = new List <Posicion>(); List <Posicion> posiciones2 = new List <Posicion>(); Cuadro cuadroAux = new Cuadro(); Posicion posicionAux = new Posicion(); posiciones1 = conjunto1.listaPosiciones(); posiciones2 = conjunto2.listaPosiciones(); foreach (Posicion lugar in posiciones1) { Cuadro cuadro = new Cuadro(); cuadro = conjunto1.getPrincipal().buscarCoordenadas(lugar, visitados, cuadroAux); posicionAux.setX(cuadro.getPosicion().getX()); posicionAux.setY(cuadro.getPosicion().getY() + 1); if (conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadro.getEnlaceVecino().setVecinoArriba(conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceVecino().setVecinoAbajo(cuadro); } visitados.Clear(); posicionAux.setX(cuadro.getPosicion().getX()); posicionAux.setY(cuadro.getPosicion().getY() - 2); if (conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadro.getEnlaceVecino().setVecinoAbajo(conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceVecino().setVecinoArriba(cuadro); } visitados.Clear(); posicionAux.setX(cuadro.getPosicion().getX() + 1); posicionAux.setY(cuadro.getPosicion().getY() + 1); if (conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadro.getEnlaceVecino().setVecinoDerecha(conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceVecino().setVecinoIzquierda(cuadro); } visitados.Clear(); posicionAux.setX(cuadro.getPosicion().getX() - 2); posicionAux.setY(cuadro.getPosicion().getY()); if (conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadro.getEnlaceVecino().setVecinoIzquierda(conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); conjunto2.getPrincipal().buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceVecino().setVecinoDerecha(cuadro); } visitados.Clear(); } }
public void enlacesConjunto(int i) { List <Cuadro> visitados = new List <Cuadro>(); Posicion posicionAux = new Posicion(); Cuadro cuadroAux = new Cuadro(); Cuadro cuadro = new Cuadro(); cuadro = this.principal.buscarCuadro(i, visitados, cuadroAux); visitados.Clear(); cuadroAux = null; posicionAux.setX(cuadro.getPosicion().getX()); posicionAux.setY(cuadro.getPosicion().getY()); if (cuadro.getEnlaceConjunto().getArriba() == null) { posicionAux.setY(posicionAux.getY() + 1); if (this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadroAux = null; cuadro.getEnlaceConjunto().setArriba(this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); cuadroAux = null; this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceConjunto().setAbajo(cuadro); } visitados.Clear(); cuadroAux = null; posicionAux.setX(cuadro.getPosicion().getX()); posicionAux.setY(cuadro.getPosicion().getY()); } if (cuadro.getEnlaceConjunto().getDerecha() == null) { posicionAux.setX(posicionAux.getX() + 1); if (this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadroAux = null; cuadro.getEnlaceConjunto().setDerecha(this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); cuadroAux = null; this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceConjunto().setIzquierda(cuadro); } visitados.Clear(); cuadroAux = null; posicionAux.setX(cuadro.getPosicion().getX()); posicionAux.setY(cuadro.getPosicion().getY()); } if (cuadro.getEnlaceConjunto().getAbajo() == null) { posicionAux.setY(posicionAux.getY() - 1); if (this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadroAux = null; cuadro.getEnlaceConjunto().setAbajo(this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); cuadroAux = null; this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceConjunto().setArriba(cuadro); } visitados.Clear(); cuadroAux = null; posicionAux.setX(cuadro.getPosicion().getX()); posicionAux.setY(cuadro.getPosicion().getY()); } if (cuadro.getEnlaceConjunto().getAbajo() == null) { posicionAux.setX(posicionAux.getX() - 1); if (this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux) != null) { visitados.Clear(); cuadroAux = null; cuadro.getEnlaceConjunto().setIzquierda(this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux)); visitados.Clear(); cuadroAux = null; this.principal.buscarCoordenadas(posicionAux, visitados, cuadroAux).getEnlaceConjunto().setDerecha(cuadro); } visitados.Clear(); cuadroAux = null; posicionAux.setX(cuadro.getPosicion().getX()); posicionAux.setY(cuadro.getPosicion().getY()); } }
public void combinar(Cuadro c, int x, int y) { Random r = new Random(); Posicion posicionAux = new Posicion(); List <Cuadro> visitados = new List <Cuadro>(); Cuadro cuadro = new Cuadro(); int aux = r.Next(3); if (aux == 0) { y += 1; posicionAux.setX(x); posicionAux.setY(y); if (this.enlaceConjunto.getArriba() == null && this.buscarCoordenadas(posicionAux, visitados, cuadro) == null) { this.enlaceConjunto.setArriba(c); c.getEnlaceConjunto().setAbajo(this); c.getPosicion().setX(x); c.getPosicion().setY(y); return; } else { this.enlaceConjunto.getArriba().combinar(c, x, y); } } else if (aux == 1) { x += 1; posicionAux.setX(x); posicionAux.setY(y); if (this.enlaceConjunto.getDerecha() == null && this.buscarCoordenadas(posicionAux, visitados, cuadro) == null) { this.enlaceConjunto.setDerecha(c); c.getEnlaceConjunto().setIzquierda(this); c.getPosicion().setX(x); c.getPosicion().setY(y); return; } else { this.enlaceConjunto.getDerecha().combinar(c, x, y); } } else if (aux == 2) { y -= 1; posicionAux.setX(x); posicionAux.setY(y); if (this.enlaceConjunto.getAbajo() == null && this.buscarCoordenadas(posicionAux, visitados, cuadro) == null) { this.enlaceConjunto.setAbajo(c); c.getEnlaceConjunto().setArriba(this); c.getPosicion().setX(x); c.getPosicion().setY(y); return; } else { this.enlaceConjunto.getAbajo().combinar(c, x, y); } } else { x -= 1; posicionAux.setX(x); posicionAux.setY(y); if (this.enlaceConjunto.getIzquierda() == null && this.buscarCoordenadas(posicionAux, visitados, cuadro) == null) { this.enlaceConjunto.setIzquierda(c); c.getEnlaceConjunto().setDerecha(this); c.getPosicion().setX(x); c.getPosicion().setY(y); return; } else { this.enlaceConjunto.getIzquierda().combinar(c, x, y); } } }