Esempio n. 1
0
        public Casilla(bool color, Tablero tablero, int i, int j)
        {
            if (color)
            {
                textura = Texturas.CASILLA_BLANCA;
            }
            else
            {
                textura = Texturas.CASILLA_NEGRA;
            }

            this.tablero = tablero;

            pos      = new Vector2(j * LADO, i * LADO);
            posX     = i;
            posY     = j;
            notacion = NotAlg.columna[j] + NotAlg.fila[i];
        }
Esempio n. 2
0
        // Determina si un jugador está ahogado (tablas)
        public bool ahogado(bool color)
        {
            ArrayList jugador;
            Rey       rey;
            Tablero   tablero = new Tablero();

            tablero.setEstado(this.getEstado());

            if (color)
            {
                jugador = tablero.fichasBlancas;
                rey     = reyBlanco;
            }
            else
            {
                jugador = tablero.fichasNegras;
                rey     = reyNegro;
            }

            if (tablero.esJaque(color, true))
            {
                return(false);
            }

            Ficha f;

            for (int i = 0; i < jugador.Count; i++)
            {
                f = (Ficha)jugador[i];
                if (f.movimientosPermitidos.Count > 0)
                {
                    return(false);
                }
            }

            return(true);
        }
Esempio n. 3
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            Texturas.CASILLA_NEGRA  = Texture2D.FromFile(graphics.GraphicsDevice, "negra.png");
            Texturas.CASILLA_BLANCA = Texture2D.FromFile(graphics.GraphicsDevice, "blanca.png");
            Texturas.NEGRO_PEON     = Texture2D.FromFile(graphics.GraphicsDevice, "npeon.png");
            Texturas.NEGRO_TORRE    = Texture2D.FromFile(graphics.GraphicsDevice, "ntorre.png");
            Texturas.NEGRO_CABALLO  = Texture2D.FromFile(graphics.GraphicsDevice, "ncaballo.png");
            Texturas.NEGRO_ALFIL    = Texture2D.FromFile(graphics.GraphicsDevice, "nalfil.png");
            Texturas.NEGRO_REINA    = Texture2D.FromFile(graphics.GraphicsDevice, "nreina.png");
            Texturas.NEGRO_REY      = Texture2D.FromFile(graphics.GraphicsDevice, "nrey.png");
            Texturas.BLANCO_PEON    = Texture2D.FromFile(graphics.GraphicsDevice, "bpeon.png");
            Texturas.BLANCO_TORRE   = Texture2D.FromFile(graphics.GraphicsDevice, "btorre.png");
            Texturas.BLANCO_CABALLO = Texture2D.FromFile(graphics.GraphicsDevice, "bcaballo.png");
            Texturas.BLANCO_ALFIL   = Texture2D.FromFile(graphics.GraphicsDevice, "balfil.png");
            Texturas.BLANCO_REINA   = Texture2D.FromFile(graphics.GraphicsDevice, "breina.png");
            Texturas.BLANCO_REY     = Texture2D.FromFile(graphics.GraphicsDevice, "brey.png");
            Texturas.RATON          = Texture2D.FromFile(graphics.GraphicsDevice, "raton.png");

            tablero = new Tablero();
        }
Esempio n. 4
0
        // Determina si el rey "color" está en jaque (mate)
        public bool esJaque(bool color, bool mate)
        {
            Rey       rey;
            ArrayList jugadorRival;
            Tablero   tablero = new Tablero();

            tablero.setEstado(this.getEstado());

            // Copia del jugador (se modifica en los calculos)
            ArrayList jugador = new ArrayList();

            if (color)
            {
                jugadorRival = tablero.fichasNegras;
                for (int i = 0; i < tablero.fichasBlancas.Count; i++)
                {
                    jugador.Add(tablero.fichasBlancas[i]);
                }
                rey = tablero.reyBlanco;
            }
            else
            {
                jugadorRival = tablero.fichasBlancas;
                for (int i = 0; i < tablero.fichasNegras.Count; i++)
                {
                    jugador.Add(tablero.fichasNegras[i]);
                }
                rey = tablero.reyNegro;
            }

            Ficha ficha;

            // Copia de los movimientos (se modifica en los calculos)
            ArrayList movimientos = new ArrayList();

            bool noJaque = false;

            for (int i = 0; i < jugadorRival.Count; i++)
            {
                ficha = (Ficha)jugadorRival[i];

                if (ficha.celdasAmenazadas.Contains(rey.miCasilla))
                {
                    if (!mate)
                    {
                        return(true);
                    }

                    if (rey.movimientosPermitidos.Count == 0)
                    {
                        Casilla aux;
                        Ficha   f, r;

                        for (int j = 0; j < jugador.Count; j++)
                        {
                            f   = (Ficha)jugador[j];
                            aux = f.miCasilla;
                            movimientos.Clear();

                            for (int k = 0; k < f.movimientosPermitidos.Count; k++)
                            {
                                movimientos.Add(f.movimientosPermitidos[k]);
                            }

                            foreach (Casilla c in movimientos)
                            {
                                r = c.ficha;

                                if (tablero.moverFicha(f, aux, c))
                                {
                                    if (!tablero.esJaque(color, false))
                                    {
                                        noJaque = true;
                                    }
                                }

                                c.ficha = r;
                                if (r != null)
                                {
                                    r.capturada = false;
                                }
                                aux.ficha = f;
                                tablero.actualizarMovimientos();

                                if (noJaque)
                                {
                                    return(false);
                                }
                            }
                        }
                        return(true);
                    }
                }
            }

            return(false);
        }
Esempio n. 5
0
        public void cargarEstado(Tablero t)
        {
            int pieza, x, y;

            turno  = t.turno;
            nTurno = t.nTurno;

            foreach (Ficha f in t.fichasBlancas)
            {
                x = f.miCasilla.posX;
                y = f.miCasilla.posY;

                switch (f.valor)
                {
                case ValorFicha.PEON:
                    pieza        = Estado.PeonBlanco;
                    mov[x][y]    = ((Peon)f).mov;
                    alPaso[x][y] = ((Peon)f).alPaso != null;
                    break;

                case ValorFicha.CABALLO:
                    pieza = Estado.CaballoBlanco;
                    break;

                case ValorFicha.ALFIL:
                    pieza = Estado.AlfilBlanco;
                    break;

                case ValorFicha.TORRE:
                    pieza = Estado.TorreBlanca;
                    break;

                case ValorFicha.REINA:
                    pieza = Estado.ReinaBlanca;
                    break;

                case ValorFicha.REY:
                    pieza      = Estado.ReyBlanco;
                    torreCB[0] = t.reyBlanco.torreC.miCasilla.posX;
                    torreCB[1] = t.reyBlanco.torreC.miCasilla.posY;
                    torreLB[0] = t.reyBlanco.torreL.miCasilla.posX;
                    torreLB[1] = t.reyBlanco.torreL.miCasilla.posY;
                    break;

                default:
                    pieza = Estado.Vacio;
                    break;
                }

                movida[x][y]  = f.movida;
                tablero[x][y] = pieza;
            }

            foreach (Ficha f in t.fichasNegras)
            {
                x = f.miCasilla.posX;
                y = f.miCasilla.posY;

                switch (f.valor)
                {
                case ValorFicha.PEON:
                    pieza        = Estado.PeonNegro;
                    mov[x][y]    = ((Peon)f).mov;
                    alPaso[x][y] = ((Peon)f).alPaso != null;
                    break;

                case ValorFicha.CABALLO:
                    pieza = Estado.CaballoNegro;
                    break;

                case ValorFicha.ALFIL:
                    pieza = Estado.AlfilNegro;
                    break;

                case ValorFicha.TORRE:
                    pieza = Estado.TorreNegra;
                    break;

                case ValorFicha.REINA:
                    pieza = Estado.ReinaNegra;
                    break;

                case ValorFicha.REY:
                    pieza      = Estado.ReyNegro;
                    torreCN[0] = t.reyNegro.torreC.miCasilla.posX;
                    torreCN[1] = t.reyNegro.torreC.miCasilla.posY;
                    torreLN[0] = t.reyNegro.torreL.miCasilla.posX;
                    torreLN[1] = t.reyNegro.torreL.miCasilla.posY;
                    break;

                default:
                    pieza = Estado.Vacio;
                    break;
                }

                movida[x][y]  = f.movida;
                tablero[x][y] = pieza;
            }
        }
Esempio n. 6
0
 public Estado(Tablero t) : this()
 {
     cargarEstado(t);
 }