/// <summary> /// /// перебора всех фигур текущего игрока на игровой доске /// /// </summary> /// /// <returns> /// /// возвращает все фигуры текущего игрока /// /// </returns> public IEnumerable <FigureOnSquare> YieldFiguresOnSquare() { foreach (Square square in Square.YieldBoardSquare()) { if (GetFigureAt(square).GetColor() == MoveColor) { yield return(new FigureOnSquare(GetFigureAt(square), square)); } } }
/// <summary> /// /// метод поиска вражеского короля на игровой доске /// /// </summary> private Square FindBadKing() { Figure badKing = MoveColor == Color.white ? Figure.blackKing : Figure.whiteKing; foreach (Square square in Square.YieldBoardSquare()) { if (GetFigureAt(square) == badKing) { return(square); } } return(Square.None); }
/// <summary> /// /// перебор всех фигур текущего игрока которые могут совершить ход на игровой доске /// /// </summary> /// /// <returns> /// /// возвращает все фигуры которые могут совершть ход /// /// </returns> public IEnumerable <string> YieldValidMoves() { foreach (FigureOnSquare figureOnSquare in _board.YieldFiguresOnSquare()) { foreach (Square to in Square.YieldBoardSquare()) { foreach (Figure promotion in figureOnSquare.FigurE.YeldPromotions(to)) { FigureMoving figureMoving = new FigureMoving(figureOnSquare, to, promotion); if (_moves.CanMove(figureMoving)) { if (!_board.IsCheckAfter(figureMoving)) { yield return(figureMoving.ToString()); } } } } } }