Beispiel #1
0
    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);
    }
Beispiel #2
0
    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()));
    }
Beispiel #3
0
 public override void actualizar(Pieza pieza, Tablero tablero)
 {
     if (pieza.obtenerY() == 0 || pieza.obtenerY() == 7)
     {
         tablero.coronar(pieza);
     }
 }
Beispiel #4
0
    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()));
    }
Beispiel #5
0
    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()));
    }
Beispiel #6
0
    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);
    }
Beispiel #7
0
    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()));
    }
Beispiel #8
0
 public void removerPieza(Pieza pieza)
 {
     this.casillas[pieza.obtenerX(), pieza.obtenerY()].vaciar();
 }
Beispiel #9
0
 public void ubicarPieza(Pieza pieza)
 {
     this.casillas[pieza.obtenerX(), pieza.obtenerY()].ubicarPieza(pieza);
 }
Beispiel #10
0
 public void vaciar()
 {
     this.pieza = new Pieza(new PiezaNula(), "", new Posicion(pieza.obtenerX(), pieza.obtenerY()));
 }
Beispiel #11
0
    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);
    }
Beispiel #12
0
    private void PiezaBox_MouseClick(object sender, MouseEventArgs e)
    {
        Posicion posicionClickeada = new Posicion(pieza.obtenerX(), pieza.obtenerY());

        manejadorDeClicks.manejar(posicionClickeada, this);
    }