示例#1
0
    private void PrivateWhoWin()
    {
        IFigureInterface king = null;

        king = findKing("black");
        if (king == null)
        {
            checkmate = "check and mate Black";
            return;
        }
        listCheckBlack = cheekKing("black");
        if (listCheckBlack.Count != 0)
        {
            checkmate = "check Black";
            return;
        }
        // ListCoordinatesFigures("black")
        king = findKing("white");
        if (king == null)
        {
            checkmate = "check and mate White";
            return;
        }
        listCheckWhite = cheekKing("white");
        if (listCheckWhite.Count != 0)
        {
            checkmate = "check White";
            return;
        }

        checkmate = "";
    }
示例#2
0
    /*
     * массив заполняется координатами фигур,
     * он передается в функций checkMove*, там происходит проверка может ли фигура в новой позиции защитить короля(королю уйти от атаки)
     */
    private List <Position> cheekKing(string color)// проверка короля, возвращает вектор с кординатами врагов, если они ставят шах и не возвращает ни чего, если король не под шахом
    {
        IFigureInterface king = null;
        Position         kingPosition;

        king = findKing(color);
        if (king == null)
        {
            return(null);
        }

        kingPosition = king.GetPosition();

        List <Position> list = new List <Position>();

        if (color == "white")
        {
            list = ListCoordinatesFigures("black");
        }
        else
        {
            list = ListCoordinatesFigures("white");
        }

        checkBlack = 0;
        checkWhite = 0;

        List <Position> listMoves = new List <Position>();

        for (int i = 0; i < list.Count; i++)
        {
            List <Position> buf = returnFigure(list[i]).PossibleMoves(board, cell);
            for (int j = 0; j < buf.Count; j++)
            {
                Position bufPosition = buf[j];
                if (kingPosition.x == bufPosition.x && kingPosition.y == bufPosition.y)
                {
                    if (color == "white")
                    {
                        checkWhite += 1;
                    }
                    if (color == "black")
                    {
                        checkBlack += 1;
                    }
                    listMoves.Add(list[i]);//изменить
                    break;
                }
            }
        }
        return(listMoves);
    }
示例#3
0
    protected IFigureInterface[,] getBoard()
    {
        IFigureInterface[,] matrix = new IFigureInterface[cell, cell];

        for (int i = 0; i < cell; i++)
        {
            for (int j = 0; j < cell; j++)
            {
                if (board[i, j] != null)
                {
                    matrix[i, j] = board[i, j].DeepCopy();
                }
                else
                {
                    matrix[i, j] = null;
                }
            }
        }

        return(matrix);
    }