public IEnumerable <Move> GenerateMoves() { King king = Side == Color.White ? WhiteKing : BlackKing; var moves = pieces.Cast <Piece>().Where(p => p != null && p.Color == Side) .SelectMany(p => p.GenerateMoves(this)).Where(x => { MakeMove(x); var result = king.From.IsAttackedSquare(this, king.OppenentColor); TakeBackMove(x); return(!result); }); return(moves); }
public IEnumerable <Piece> GetPiecesForColor(Color color) { return(Board.Cast <Piece>().Where(piece => piece != null && piece.Color == color).ToList()); }
public IEnumerator <Piece> GetEnumerator() { return(board.Cast <Piece>().Where(x => x != null).GetEnumerator()); }
public Piece[] Pieces() { return(board.Cast <Piece>().ToArray()); }