Ejemplo n.º 1
0
        public int playable(Board brd, int x2, int y2)
        {
            if (x2 < 0 || y2 < 0)
            {
                return(0);
            }
            Point p    = brd.searchKing(color);
            King  king = new King(color, 0, 0);

            king.x = p.x;
            king.y = p.y;
            Board brd2 = new Board();

            for (int i = 0; i < 8; i++)
            {
                for (int j = 0; j < 8; j++)
                {
                    brd2.setSquare(brd.getInfo(i, j), i, j);
                }
            }
            if (move(brd2, x2, y2) == 1)
            {
                brd2.setSquare(0, x, y);
                if (color == 1)
                {
                    brd2.setSquare(5, x2, y2);
                }
                else
                {
                    brd2.setSquare(11, x2, y2);
                }
            }
            else
            {
                return(0);
            }
            if (king.isChecked(brd2) == 1)
            {
                return(0);
            }
            else
            {
                return(1);
            }
        }
Ejemplo n.º 2
0
        public int isMated(int color)
        {
            Point p = new Point();

            p = searchKing(color);
            King king = new King(color, p.x, p.y);

            if (king.isChecked(this) == 1)
            {
                if (canDefend(color) == 1)
                {
                    return(0);
                }
                else
                {
                    return(1);
                }
            }
            return(0);
        }
Ejemplo n.º 3
0
        public int canDefend(int color)
        {
            Board  b = new Board();
            Castle castle = new Castle(color, 0, 0);
            Pawn   pawn = new Pawn(color, 0, 0);
            Knight knight = new Knight(color, 0, 0);
            Bishop bishop = new Bishop(color, 0, 0);
            Queen  queen = new Queen(color, 0, 0);
            int    i, j, m, n, f = 0;

            for (i = 0; i < 8; i++)
            {
                for (j = 0; j < 8; j++)
                {
                    b.setSquare(this.getInfo(i, j), i, j);
                }
            }
            Point p    = b.searchKing(color);
            King  king = new King(color, p.x, p.y);

            for (i = 0; i < 8; i++)
            {
                for (j = 0; j < 8; j++)
                {
                    if (b.getInfo(i, j) == 0)
                    {
                    }
                    else if (b.getInfo(i, j) == (color == 1 ? 1 : 7))
                    {
                        castle.x = i;
                        castle.y = j;
                        for (m = 0; m < 8; m++)
                        {
                            for (n = 0; n < 8; n++)
                            {
                                if (castle.move(b, m, n) == 1)
                                {
                                    f = b.getInfo(m, n);
                                    b.setSquare(0, i, j);
                                    b.setSquare((color == 1 ? 1 : 7), m, n);
                                    if (king.isChecked(b) == 0)
                                    {
                                        return(1);
                                    }
                                    b.setSquare((color == 1 ? 1 : 7), i, j);
                                    b.setSquare(f, m, n);
                                }
                            }
                        }
                    }
                    else if (b.getInfo(i, j) == (color == 1 ? 2 : 8))
                    {
                        knight.x = i;
                        knight.y = j;
                        for (m = 0; m < 8; m++)
                        {
                            for (n = 0; n < 8; n++)
                            {
                                if (knight.move(b, m, n) == 1)
                                {
                                    f = b.getInfo(m, n);
                                    b.setSquare(0, i, j);
                                    b.setSquare((color == 1 ? 2 : 8), m, n);
                                    if (king.isChecked(b) == 0)
                                    {
                                        return(1);
                                    }
                                    b.setSquare((color == 1 ? 2 : 8), i, j);
                                    b.setSquare(f, m, n);
                                }
                            }
                        }
                    }
                    else if (b.getInfo(i, j) == (color == 1 ? 3 : 9))
                    {
                        bishop.x = i;
                        bishop.y = j;
                        for (m = 0; m < 8; m++)
                        {
                            for (n = 0; n < 8; n++)
                            {
                                if (bishop.move(b, m, n) == 1)
                                {
                                    f = b.getInfo(m, n);
                                    b.setSquare(0, i, j);
                                    b.setSquare((color == 1 ? 3 : 9), m, n);
                                    if (king.isChecked(b) == 0)
                                    {
                                        return(1);
                                    }
                                    b.setSquare((color == 1 ? 3 : 9), i, j);
                                    b.setSquare(f, m, n);
                                }
                            }
                        }
                    }
                    else if (b.getInfo(i, j) == (color == 1 ? 4 : 10))
                    {
                        queen.x = i;
                        queen.y = j;
                        for (m = 0; m < 8; m++)
                        {
                            for (n = 0; n < 8; n++)
                            {
                                if (queen.move(b, m, n) == 1)
                                {
                                    f = b.getInfo(m, n);
                                    b.setSquare(0, i, j);
                                    b.setSquare((color == 1 ? 4 : 10), m, n);
                                    if (king.isChecked(b) == 0)
                                    {
                                        return(1);
                                    }
                                    b.setSquare((color == 1 ? 4 : 10), i, j);
                                    b.setSquare(f, m, n);
                                }
                            }
                        }
                    }

                    else if (b.getInfo(i, j) == (color == 1 ? 5 : 11))
                    {
                        for (m = 0; m < 8; m++)
                        {
                            for (n = 0; n < 8; n++)
                            {
                                if (king.move(b, m, n) == 1)
                                {
                                    f      = b.getInfo(m, n);
                                    king.x = m;
                                    king.y = n;
                                    b.setSquare(0, i, j);
                                    b.setSquare((color == 1 ? 5 : 11), m, n);
                                    if (king.isChecked(b) == 0)
                                    {
                                        return(1);
                                    }
                                    b.setSquare((color == 1 ? 5 : 11), i, j);
                                    b.setSquare(f, m, n);
                                    king.x = p.x;
                                    king.y = p.y;
                                }
                            }
                        }
                    }

                    else if (b.getInfo(i, j) == (color == 1 ? 6 : 12))
                    {
                        pawn.x = i;
                        pawn.y = j;
                        for (m = 0; m < 8; m++)
                        {
                            for (n = 0; n < 8; n++)
                            {
                                if (pawn.move(b, m, n) == 1)
                                {
                                    f = b.getInfo(m, n);
                                    b.setSquare(0, i, j);
                                    b.setSquare((color == 1 ? 6 : 12), m, n);
                                    if (king.isChecked(b) == 0)
                                    {
                                        return(1);
                                    }
                                    b.setSquare((color == 1 ? 6 : 12), i, j);
                                    b.setSquare(f, m, n);
                                }
                            }
                        }
                    }
                }
            }
            return(0);
        }