public bool hayPiezasBloqueandoElCaminoVertical(Pieza pieza, Posicion nuevaPosicion, Tablero tablero) { bool seEncontroUnaPiezaEnElCamino = false; bool laPiezaEnLaNuevaPosicionEsDelMismoColor = false; int i = pieza.obtenerY(); while (i != nuevaPosicion.obtenerY() && !seEncontroUnaPiezaEnElCamino) { if (i != pieza.obtenerY() && tablero.piezaEn(new Posicion(pieza.obtenerX(), i)).obtenerColor() != "") { seEncontroUnaPiezaEnElCamino = true; } if (i < nuevaPosicion.obtenerY()) { i++; } else if (i > nuevaPosicion.obtenerY()) { i--; } } if (pieza.obtenerColor() == tablero.piezaEn(nuevaPosicion).obtenerColor()) { laPiezaEnLaNuevaPosicionEsDelMismoColor = true; } return(seEncontroUnaPiezaEnElCamino || laPiezaEnLaNuevaPosicionEsDelMismoColor); }
public override bool esValidaLaNuevaPosicion(Pieza pieza, Posicion nuevaPosicion, Tablero tablero) { bool esUnMovimientoValido = false; if (nuevaPosicion.obtenerX() == pieza.obtenerX() + 1 && (nuevaPosicion.obtenerY() == pieza.obtenerY() + 2 || nuevaPosicion.obtenerY() == pieza.obtenerY() - 2)) { esUnMovimientoValido = true; } else if (nuevaPosicion.obtenerX() == pieza.obtenerX() - 1 && (nuevaPosicion.obtenerY() == pieza.obtenerY() + 2 || nuevaPosicion.obtenerY() == pieza.obtenerY() - 2)) { esUnMovimientoValido = true; } else if (nuevaPosicion.obtenerX() == pieza.obtenerX() + 2 && (nuevaPosicion.obtenerY() == pieza.obtenerY() + 1 || nuevaPosicion.obtenerY() == pieza.obtenerY() - 1)) { esUnMovimientoValido = true; } else if (nuevaPosicion.obtenerX() == pieza.obtenerX() - 2 && (nuevaPosicion.obtenerY() == pieza.obtenerY() + 1 || nuevaPosicion.obtenerY() == pieza.obtenerY() - 1)) { esUnMovimientoValido = true; } return(esUnMovimientoValido && (pieza.obtenerColor() != tablero.piezaEn(nuevaPosicion).obtenerColor())); }
public override void actualizar(Pieza pieza, Tablero tablero) { if (pieza.obtenerY() == 0 || pieza.obtenerY() == 7) { tablero.coronar(pieza); } }
public override bool esValidaLaNuevaPosicion(Pieza pieza, Posicion nuevaPosicion, Tablero tablero) { bool esYValido = false; bool esXValido = false; string colorPiezaEnNuevaPosicion = tablero.piezaEn(nuevaPosicion).obtenerColor(); if (pieza.obtenerColor() == "Blanco") { if (nuevaPosicion.obtenerY() == pieza.obtenerY() + 1) { esYValido = true; } if ((nuevaPosicion.obtenerX() == pieza.obtenerX() && colorPiezaEnNuevaPosicion == "") || (colorPiezaEnNuevaPosicion == "Negro" && Math.Abs(nuevaPosicion.obtenerX() - pieza.obtenerX()) == 1)) { esXValido = true; } if (nuevaPosicion.obtenerX() == pieza.obtenerX() && nuevaPosicion.obtenerY() == pieza.obtenerY() + 2 && pieza.obtenerY() == 1 && tablero.piezaEn(new Posicion(pieza.obtenerX(), 2)).obtenerColor() == "") { esYValido = true; esXValido = true; } } else if (pieza.obtenerColor() == "Negro") { if (nuevaPosicion.obtenerY() == pieza.obtenerY() - 1) { esYValido = true; } if ((nuevaPosicion.obtenerX() == pieza.obtenerX() && colorPiezaEnNuevaPosicion == "") || (colorPiezaEnNuevaPosicion == "Blanco" && Math.Abs(nuevaPosicion.obtenerX() - pieza.obtenerX()) == 1)) { esXValido = true; } if (nuevaPosicion.obtenerX() == pieza.obtenerX() && nuevaPosicion.obtenerY() == pieza.obtenerY() - 2 && pieza.obtenerY() == 6 && tablero.piezaEn(new Posicion(pieza.obtenerX(), 5)).obtenerColor() == "") { esYValido = true; esXValido = true; } } return(esXValido && esYValido && (pieza.obtenerColor() != tablero.piezaEn(nuevaPosicion).obtenerColor())); }
public PiezaVista(Pieza pieza) { this.pieza = pieza; piezaBox = new PictureBox(); piezaBox.SizeMode = PictureBoxSizeMode.StretchImage; piezaBox.Visible = true; piezaBox.Width = 90; piezaBox.Height = 90; piezaBox.BackColor = Color.Transparent; piezaBox.MouseClick += PiezaBox_MouseClick; piezaBox.Paint += PiezaBox_Paint; piezaBox.Tag = Color.Transparent; this.actualizar(new Posicion(pieza.obtenerX(), pieza.obtenerY())); }
public override bool esValidaLaNuevaPosicion(Pieza pieza, Posicion nuevaPosicion, Tablero tablero) { bool esValidaLaNuevaPosicion = false; bool lasPosicionesXSonIguales = pieza.obtenerX() == nuevaPosicion.obtenerX(); bool lasPosicionesYSonIguales = pieza.obtenerY() == nuevaPosicion.obtenerY(); if (lasPosicionesXSonIguales && !lasPosicionesYSonIguales) { esValidaLaNuevaPosicion = !hayPiezasBloqueandoElCaminoVertical(pieza, nuevaPosicion, tablero); } else if (!lasPosicionesXSonIguales && lasPosicionesYSonIguales) { esValidaLaNuevaPosicion = !hayPiezasBloqueandoElCaminoHorizontal(pieza, nuevaPosicion, tablero); } return(esValidaLaNuevaPosicion); }
public override bool esValidaLaNuevaPosicion(Pieza pieza, Posicion nuevaPosicion, Tablero tablero) { bool esValidaLaNuevaPosicion = false; Pieza torreDerecha; Pieza torreIzquierda; if (pieza.obtenerColor() == "Blanco") { torreDerecha = tablero.piezaEn(new Posicion(7, 0)); torreIzquierda = tablero.piezaEn(new Posicion(0, 0)); } else { torreDerecha = tablero.piezaEn(new Posicion(7, 7)); torreIzquierda = tablero.piezaEn(new Posicion(0, 7)); } if (Math.Abs(pieza.obtenerX() - nuevaPosicion.obtenerX()) == 1 && Math.Abs(pieza.obtenerY() - nuevaPosicion.obtenerY()) <= 1) { esValidaLaNuevaPosicion = true; } else if (Math.Abs(pieza.obtenerX() - nuevaPosicion.obtenerX()) == 0 && Math.Abs(pieza.obtenerY() - nuevaPosicion.obtenerY()) == 1) { esValidaLaNuevaPosicion = true; } else if (!torreIzquierda.seMovio() && sePuedeEnrocarIzquierda(pieza.obtenerColor(), tablero) && quiereEnrocarIzquierda(pieza, nuevaPosicion)) { enrocarIzquierda(pieza, tablero, nuevaPosicion); } else if (!torreIzquierda.seMovio() && sePuedeEnrocarDerecha(pieza.obtenerColor(), tablero) && quiereEnrocarDerecha(pieza, nuevaPosicion)) { enrocarDerecha(pieza, tablero, nuevaPosicion); } return(esValidaLaNuevaPosicion && (pieza.obtenerColor() != tablero.piezaEn(nuevaPosicion).obtenerColor())); }
public void removerPieza(Pieza pieza) { this.casillas[pieza.obtenerX(), pieza.obtenerY()].vaciar(); }
public void ubicarPieza(Pieza pieza) { this.casillas[pieza.obtenerX(), pieza.obtenerY()].ubicarPieza(pieza); }
public void vaciar() { this.pieza = new Pieza(new PiezaNula(), "", new Posicion(pieza.obtenerX(), pieza.obtenerY())); }
public override bool esValidaLaNuevaPosicion(Pieza pieza, Posicion nuevaPosicion, Tablero tablero) { bool esValidaLaNuevaPosicion = false; bool esUnMovimientoValido = Math.Abs(nuevaPosicion.obtenerX() - pieza.obtenerX()) == Math.Abs(nuevaPosicion.obtenerY() - pieza.obtenerY()) && nuevaPosicion.obtenerX() != pieza.obtenerX(); if (esUnMovimientoValido) { esValidaLaNuevaPosicion = !hayPiezasBloqueandoElCamino(pieza, nuevaPosicion, tablero); } return(esValidaLaNuevaPosicion); }
private void PiezaBox_MouseClick(object sender, MouseEventArgs e) { Posicion posicionClickeada = new Posicion(pieza.obtenerX(), pieza.obtenerY()); manejadorDeClicks.manejar(posicionClickeada, this); }