示例#1
0
 public override void actualizarMovimientos(Casilla casilla)
 {
     miCasilla = casilla;
     movimientosPermitidos.Clear();
     Torre.añadirMovyAme(miCasilla, movimientosPermitidos, true);
     Alfil.añadirMovyAme(miCasilla, movimientosPermitidos, true);
 }
示例#2
0
 public override void actualizarAmenazas(Casilla casilla)
 {
     miCasilla = casilla;
     celdasAmenazadas.Clear();
     Torre.añadirMovyAme(miCasilla, celdasAmenazadas, false);
     Alfil.añadirMovyAme(miCasilla, celdasAmenazadas, false);
 }
示例#3
0
        public void setEstado(Estado estado)
        {
            try
            {
                turno  = estado.turno;
                nTurno = estado.nTurno;

                fichasBlancas.Clear();
                fichasNegras.Clear();
                selected     = null;
                seleccionada = null;

                for (int i = 0; i < Estado.LADO; i++)
                {
                    for (int j = 0; j < Estado.LADO; j++)
                    {
                        // Referente a la casilla
                        tablero[i][j].alPaso = estado.alPaso[i][j];

                        switch (estado.tablero[i][j])
                        {
                        case Estado.Vacio:
                            tablero[i][j].ficha = null;
                            break;

                        case Estado.PeonBlanco:
                            Peon peon = new Peon(Ficha.BLANCA, tablero[i][j]);
                            tablero[i][j].ficha = peon;
                            peon.mov            = estado.mov[i][j];
                            if (tablero[i][j].abajo.alPaso)
                            {
                                peon.alPaso          = tablero[i][j];
                                peon.posNormal       = tablero[i][j].abajo;
                                peon.posNormal.ficha = peon;
                            }
                            break;

                        case Estado.TorreBlanca:
                            Torre torre = new Torre(Ficha.BLANCA, tablero[i][j]);
                            tablero[i][j].ficha = torre;
                            break;

                        case Estado.CaballoBlanco:
                            Caballo caballo = new Caballo(Ficha.BLANCA, tablero[i][j]);
                            tablero[i][j].ficha = caballo;
                            break;

                        case Estado.AlfilBlanco:
                            Alfil alfil = new Alfil(Ficha.BLANCA, tablero[i][j]);
                            tablero[i][j].ficha = alfil;
                            break;

                        case Estado.ReinaBlanca:
                            Reina dama = new Reina(Ficha.BLANCA, tablero[i][j]);
                            tablero[i][j].ficha = dama;
                            break;

                        case Estado.ReyBlanco:
                            reyBlanco           = new Rey(Ficha.BLANCA, tablero[i][j]);
                            tablero[i][j].ficha = reyBlanco;
                            break;

                        case Estado.PeonNegro:
                            Peon peon2 = new Peon(Ficha.NEGRA, tablero[i][j]);
                            tablero[i][j].ficha = peon2;
                            peon2.mov           = estado.mov[i][j];
                            if (tablero[i][j].arriba.alPaso)
                            {
                                peon2.alPaso          = tablero[i][j];
                                peon2.posNormal       = tablero[i][j].arriba;
                                peon2.posNormal.ficha = peon2;
                            }
                            break;

                        case Estado.TorreNegra:
                            Torre torre2 = new Torre(Ficha.NEGRA, tablero[i][j]);
                            tablero[i][j].ficha = torre2;
                            break;

                        case Estado.CaballoNegro:
                            Caballo caballo2 = new Caballo(Ficha.NEGRA, tablero[i][j]);
                            tablero[i][j].ficha = caballo2;
                            break;

                        case Estado.AlfilNegro:
                            Alfil alfil2 = new Alfil(Ficha.NEGRA, tablero[i][j]);
                            tablero[i][j].ficha = alfil2;
                            break;

                        case Estado.ReinaNegra:
                            Reina dama2 = new Reina(Ficha.NEGRA, tablero[i][j]);
                            tablero[i][j].ficha = dama2;
                            break;

                        case Estado.ReyNegro:
                            reyNegro            = new Rey(Ficha.NEGRA, tablero[i][j]);
                            tablero[i][j].ficha = reyNegro;
                            break;

                        default:
                            break;
                        }

                        if (tablero[i][j].ficha != null)
                        {
                            tablero[i][j].ficha.movida = estado.movida[i][j];
                            if (tablero[i][j].ficha.color == Ficha.BLANCA)
                            {
                                fichasBlancas.Add(tablero[i][j].ficha);
                            }
                            else
                            {
                                fichasNegras.Add(tablero[i][j].ficha);
                            }
                        }
                    }
                } // Bucle externo (i)

                // Torres de los reyes
                reyBlanco.torreC = ((Torre)tablero[estado.torreCB[0]][estado.torreCB[1]].ficha);
                reyBlanco.torreL = ((Torre)tablero[estado.torreLB[0]][estado.torreLB[1]].ficha);
                reyNegro.torreC  = ((Torre)tablero[estado.torreCN[0]][estado.torreCN[1]].ficha);
                reyNegro.torreL  = ((Torre)tablero[estado.torreLN[0]][estado.torreLN[1]].ficha);

                // Actualizamos resto de cosas
                this.actualizarMovimientos();
            }
            catch (Exception e)
            {
                MessageBox.Show("Error cargando estado previo: \n\r" + e.Message);
            }
        }
示例#4
0
        static public void añadirMovyAme(Casilla casilla, ArrayList al, bool mov)
        {
            Casilla vecina;

            // Arriba Derecha
            int j = casilla.posY + 1;
            int i;

            for (i = casilla.posX + 1; i < 8 && j < 8; i++)
            {
                vecina = casilla.tablero.tablero[i][j];

                if (Alfil.comprobarMovAme(vecina, casilla.ficha.color, al, mov))
                {
                    break;
                }

                j++;
            }

            // Arriba Izquierda
            j = casilla.posY - 1;
            for (i = casilla.posX + 1; i < 8 && j >= 0; i++)
            {
                vecina = casilla.tablero.tablero[i][j];

                if (Alfil.comprobarMovAme(vecina, casilla.ficha.color, al, mov))
                {
                    break;
                }

                j--;
            }

            // Abajo Izquierda
            j = casilla.posY - 1;
            for (i = casilla.posX - 1; i >= 0 && j >= 0; i--)
            {
                vecina = casilla.tablero.tablero[i][j];

                if (Alfil.comprobarMovAme(vecina, casilla.ficha.color, al, mov))
                {
                    break;
                }

                j--;
            }

            // Abajo Derecha
            j = casilla.posY + 1;
            for (i = casilla.posX - 1; i >= 0 && j < 8; i--)
            {
                vecina = casilla.tablero.tablero[i][j];

                if (Alfil.comprobarMovAme(vecina, casilla.ficha.color, al, mov))
                {
                    break;
                }

                j++;
            }
        }