美文网首页码农
GlovePIE脚本语言文档的中文翻译

GlovePIE脚本语言文档的中文翻译

作者: FSS_Sosei | 来源:发表于2019-11-15 07:35 被阅读0次

    这大约是我2011年发布的,再贴这儿

    文内符号说明:“[]”内是可用可不用的项,“|”两边是单选项。

    注释可以为以下几种

    // 注释

    ' 注释

    REM 注释

    % 注释

    /* 多行

    注释 */

    建议用“//”

    debug=变量

    就能在调试窗口实时显示变量值

    ---------------------------------------

    赋值语句

    有向前赋值和向后赋值两种形式,等价的。

    向前赋值语句如下

    变量名  = 表达式 [;]

    变量名 := 表达式 [;]

    向后赋值语句如下

    表达式 => 变量名 [;]

    例如

    Ctrl = var.a

    Ctrl = var.b

    它有类似的效果:  Ctrl = var.a or var.b

    ------------------------------------------

    IF语句

    有以下句法

    if 条件 then 语句 [;]

    if (条件) [then] 语句 [;]

    if 条件 [then] [begin] [{]

      语句 [;]

      语句 [;]

      ...

    [}] [end [if]] [;]

    if 条件 [then] [begin] [{]

      语句 [;]

      语句 [;]

      ...

    [}] [end] else [begin] [{]

      语句 [;]

      语句 [;]

      ...

    [}] [end [if]] [;]

    if 条件 [then] [begin] [{]

      语句 [;]

      语句 [;]

      ...

    [}] [end] (else if|elseif) 条件2 [then] [begin] [{]

      语句 [;]

      语句 [;]

      ...

    [}] [end] (else if|elseif) 条件3 [then] [begin] [{]

      语句 [;]

      语句 [;]

      ...

    [}] [end] else [begin] [{]

      语句 [;]

      语句 [;]

      ...

    [}] [end [if]] [;]

    --------------------------------------------

    WHILE循环语句

    当条件为真则循环

    有以下句法

    while 条件 do 语句 [;]

    while (条件) [do] 语句 [;]

    while 条件 [do] [begin] [{]

      语句 [;]

      语句 [;]

      ...

    [}] [end [while]] [;]

    任何循环最多只运行0.2秒,超过就强制中止。

    --------------------------------------------

    FOR循环语句

    有以下句法

    for 变量 (=|:=) 初始量 (to|downto) 结束量 [step 步长] do 语句 [;]

    for 变量 (=|:=) 初始量 (to|downto) 结束量 [step 步长] [do] [begin] [{]

      语句 [;]

      语句 [;]

      ...

    [}] [end [for]]

    for (赋初值 ; 条件 ; 增量) [do] 语句 [;]

    for (赋初值 ; 条件 ; 增量) [do] [begin] [{]

      语句 [;]

      语句 [;]

      ...

    [}] [end [for]]

    任何循环最多只运行0.2秒,超过就强制中止。

    --------------------------------------------

    等待命令

    有以下句法

    wait 持续时间 [;]

    wait(持续时间) [;]

    通常为持续时间指定单位。有效的单位是:ms, s, minutes, hours, days

    --------------------------------------------

    增减语句

    有以下句法

    var.x++

    ++var.x

    Inc(var.x)

    var.x--

    --var.x

    Dec(var.x)

    --------------------------------------------

    位移语句

    有以下句法

    左移变量N位

    shl var.x, N

    右移变量N位

    shr var.x, N

    --------------------------------------------

    “说”命令

    Say "句子"

    Say("句子")

    发出合成语音

    --------------------------------------------

    其他命令

    ExitScript

    退出当前脚本运行

    ExitPIE

    退出GlovePIE软件

    FlashPieWindow

    闪GlovePIE的窗口

    HidePie

    隐藏GlovePIE

    ShowPie

    显示GlovePIE

    RestorePie

    复位GlovePIE的窗口

    MinimizePie

    最小化GlovePIE的窗口

    MaximizePie

    最大化GlovePIE的窗口

    UnMinimizePie

    反最小化GlovePIE的窗口

    UnMaximizePie

    反最大化GlovePIE的窗口

    Execute(文件名)

    执行外部程序

    Chain(文件名)

    调用运行另一脚本

    PlaySound(文件名)

    播放音频文件

    Beep([频率, 持续时间])

    响单频率声

    BeepAsterisk

    响*音效

    BeepExclamation

    响!音效

    BeepHand

    响!音效

    BeepQuestion

    响?音效BeepDefault

    响缺省音效

    Display(text)

    输出信息

    DebugPrint(text)

    调试窗口输出信息

    OutputToFile(text)

    输出信息到文件里

    AddCode(text)

    不知道

    Type(字符串)

    模拟键盘打入字符串

    TypeUnicode(字符串)

    模拟键盘打入Unicode字符串

    Press(键)

    按下键

    Release(键)

    释放键

    Toggle(键)

    如果键当前是按下状态,则释放键,如果键当前是释放状态,则按下键。

    SendOsc(ip, port, address, [p1, p2, p3…])

    BroadcastOsc(port, address, [p1, p2, p3…])

    这两个是网络发送信息的函数

    ControlPanel, ControlPanelKeyboard, ControlPanelJoystick, ControlPanelMouse, ControlPanelP5, ControlPanelPPJoy, ControlPanelSpeech, ControlPanelMidi, ControlPanelDisplay这些都是打开各个设备的控制面板。

    ================================================================

    GlovePIE内置函数

    三角函数

    单位是度

    Standard trig functions: sin(x), cos(x), tan(x), sec(x), cosec(x), cotan(x)

    Hyperbolic trig functions: SinH(x), CosH(x), TanH(x), SecH(x), CosecH(x), CotH(x)

    Inverse trig functions: aSin(x), aCos(x), aTan(x), aSec(x), aCosec(x), aCotan(x)

    Inverse Hyperbolic trig functions: aSinH(x), aCosH(x), aTanH(x), aSecH(x), aCosecH(x), aCotanH(x)

    2D inverse tan function: atan2(x)

    ----------------------------------------------

    舍入函数

    ceil(x): 向正无穷方向取整

    floor(x): 向负无穷方向取整

    trunc(x), int: 向零方向取整

    round(x): 四舍五入法取整  .5取最接近的偶数(银行家舍入法)

    frac(x): 取小数部分。 例如  Frac(-1.32) = -0.32

    RoundTo(x, 位): 如果“位”是负或零,则按位数使用银行家舍入法。如果“位”是正,则(rounds to that power of ten using Banker's Rounding.)

    SimpleRoundTo(x [,位]): 和RoundTo函数基本一样,除了只四舍五入,不用银行家舍入法。位缺省值是-2。

    --------------------------------------------------

    正负函数

    Sign(x): 如果x是正返回1,如果x是零返回0,如果x是负返回-1。

    Abs(x): 返回x的绝对值。

    --------------------------------------------------

    指数和开方函数

    sqr(x):  x^2

    sqrt(x): x^(1/2)

    power(x,y): calculates x^y

    intPower(x,y): x和y取整后算 x^y

    exp(x): e^x.  e is 2.71828

    Ldexp(s,p):  s * (2^p)

    Poly(x, a0, [a1, [a2, [a3, [a4, [a5, [a6]]]]]]):  a0 + a1*x + a2*(x^2) + a3*(x^3) + a4*(x^4) + ...

    Log10(x): 10为底数的对数

    Log2(x): 2为底数的对数

    LogN(N, x): N为底数的对数

    Ln(x): 自然对数

    LnXP1(x): x+1的自然对数

    --------------------------------------------------

    比较函数

    IsZero(x): 如果是0返回真

    IsInfinite(x): returns true if x is infinite

    IsNaN(x): 如果不是数字返回真

    SameValue(a, b [, epsilon]): 如果a和b相等返回真, or differ by no more than epsilon

    InSet(x,a,b,c,d,e,f,g,...): 如果x匹配后面任意一值,则返回真

    max(a,b): 返回较大的值

    min(a,b): 返回较小的值

    --------------------------------------------------

    范围函数

    EnsureRange(x, a, b): 如果x在[a,b]区间,返回x,如果小于a则返回a,大于b则返回b。

    InRange(x, a, b): 如果x在[a, b]区间内返回真

    MapRange(x, a, b, c, d):  根据x在[a, b]范围的比例映射[c, d]范围。例如MapRange(2, 1, 3, 10, 30)返回20

    EnsureMapRange(x, a, b, c, d): 和MapRange类似,只是当x超出[a,b]区间按EnsureRange反应。例如EnsureMapRange(4, 1, 3, 10, 30)返回30

    --------------------------------------------------

    随机函数

    Random: 返回0到1间的随机数

    Random(n): 返回0到n-1的随机整数

    RandomRange(a,b): 返回a到b-1的随机整数

    RandG(mean, StandDev): 返回高斯分布随机数

    --------------------------------------------------

    序数函数

    odd(n): 如果是奇数返回真

    pred(n): 返回 n-1

    succ(n): 返回 n+1

    --------------------------------------------------

    时间函数

    Now: 返回当前时间日期在1899.12.30之后多少天(非整数)

    Time: 返回Now函数的小数部分

    Date: 返回Now函数的整数部分

    Tomorrow: 等于Date+1

    Yesterday: 等于Date-1

    CurrentYear: 返回当前年份

    DateOf(x): 返回日单位。例如 DateOf(1999)返回1999 days

    TimeOf(x): 返回日单位。例如 TimeOf(0.2)返回0.2 days

    DayOfTheMonth(x), DayOfTheWeek(x), DayOfTheYear(x), 

    HourOfTheDay(x), HourOfTheMonth(x), HourOfTheWeek(x), HourOfTheYear(x),

    Daysbetween(x, y),HoursBetween(x, y),

    DaysInAMonth(年,月):返回参数月有几天

    DaysInAYear(年):返回参数年有几天

    DaysInMonth(x)一直返回31 days;DaysInYear(x)一直返回365 days

    DaySpan(x, y), HourSpan(x, y),

    IncDay(x, [y])

    DayOfweek(天数):返回参数天数除以7后余下的天数

    --------------------------------------------------

    时序函数

    Smooth(x, [额外桢数, [不工作区]])

    根据x之前的额外桢数平滑之。不工作区缺省是0.

    Pressed(键)按下就返回true。

    Clicked(键)点击(压下松开算一次点击)就返回true,不论单击双击。

    SingleClicked(键)单击返回true。

    DoubleClicked(键)双击返回true。

    HeldDown(x, MinTime)

    x为真持续时间大于MinTime时返回true。

    KeepDown(x, MinTime)

    当x为真后,持续保持true输出MinTime时间。

    ================================================================

    运算符

    不同类型的量运算会自动转换

    a%

    百分比号

    -b

    负号

    |b|

    取绝对值,b可以是数字、向量或矩阵。

    a + b

    a plus b

    如果a和b是数就加运算;如果a和b是字符串就连接起来;如果a和b是布尔量就等同于and运算符;如果a是向量,b不是,它将扩展长度但不改变方向。

    a - b

    a minus b

    如果a和b是数就减运算;如果a和b是字符串就连接起来;如果a和b是布尔量就等同于and运算符;如果a是向量,b不是,它将扩展长度但不改变方向。

    a x b

    a * b

    a times b

    a multiplied by b

    a cross b

    乘运算

    a . b

    a dot b

    如果a和b是向量就 点乘运算,其他数则等同普通乘运算。

    a% of b

    a % of b

    a%乘以b

    a / b

    a divided by b

    普通除法运算。如果a和b是布尔量就等同于or运算符

    a div b

    整数除法。(a或b可以是非整数)

    a mod b

    a % b

    取模运算。(注意这是可以非整取模。例如7.5 mod 3.5返回0.5)

    a ^ b

    a ** b

    指数运算

    a ^^ b

    反复指数运算。例如2^^4就是2^(2^(2^2))

    b!

    阶乘

    b!!

    当b为奇数,则等于从1到b的所有奇数的乘积。当b为偶数,则等于从2到b的所有偶数的乘积

    a & b

    如果a和b是整数,进行逐位与运算,如果是非整数,先取整再运算,如果是字符串则连接起来。

    a | b

    如果a和b是整数,进行逐位或运算,如果是非整数,先取整再运算,如果是字符串则连接起来。

    a shl b

    a << b

    a左位移b位,等于a * (2^b)

    a shr b

    a >> b

    a右位移b位,等于a div (2^b)

    not b

    逻辑取反

    a and b

    a but b

    a和b都为真返回真(如果为数,则>-0.5到<0.5的范围内算假)。这只是逻辑运算,不是位运算符。

    a or b

    either a or b

    a或b任意是真则返回真(如果为数,则>-0.5到<0.5的范围内算假)。这只是逻辑运算,不是位运算符。

    neither a nor b

    a和b都为假返回真

    a xor b

    当且仅当a或b有一为真,则返回真。

    a = b

    a == b

    当a等于b,则返回真

    a != b

    a <> b

    a isn't b

    a is not b

    当a不等于b,则返回真

    a ~= b

    如果a近似等于b,则返回真。(近似相等就是,字符串字母和顺序都一样,除了大小写和空格不算。数字就是当把a转化成b相同的单位制,两者的差的绝对值小于一个很小的值。)

    a !~= b

    a ~!= b

    如果a不近似等于b,则返回真。

    a > b

    a大于b则返回真

    a < b

    a小于b则返回真

    a >= b

    a大于等于b则返回真

    a <= b

    a小于等于b则返回真

    b < a < c

    c > a > b

    如果a大于b并且小于c,则返回真

    b <= a < c

    c > a >= b

    如果a大于等于b并且小于c,则返回真

    b < a <= c

    c >= a > b

    如果a大于b并且小于等于c,则返回真

    b <= a <= c

    c >= a >= b

    如果a大于等于b并且小于等于c,则返回真

    ==================================================

    键盘

    直接键名就可以读或设置。但不推荐

    例如F1有以下三种形式

    F1

    Key.F1  (推荐形式)

    Keyboard.F1

    还有控制键联合用的写法

    ^C

    Ctrl+C  (推荐)

    Ctrl and C

    用Key.ScanCode或Key.VK读取键扫描码。

    Key.Row返回第几行(键盘最上面为第一行)的按键被按下。无键被按时返回-1。

    任意键被按下Key.AnyKey返回true。

    设置Key.RawInput为true,用来强制GlovePIE使用RawInput直读键盘,而非用默认的DirectInput方式。

    当有多个键盘,使用KeyN.键的形式会自动强制使用RawInput直读键盘。

    读Key.Count的值可知正连着几个键盘。

    读KeyN.Exists的值可知第N号键盘是否连着。

    以下键不能在GlovePIE中使用

    F Lock;My Documents;Messenger;LogOff;Power。

    非标准的多媒体键和应用程序键能使用,但不能知道被按下多久。

    GlovePIE也能模拟输入Unicode字符。Key.Unicode后跟4位16进制数。如Key.Unicode03B1

    字母上方数字键除可以Key.1,Key.2,Key.3……(推荐形式),也可以Key.one,Key.two,Key.three……。数字小键盘用Key.NumPad1,Key.NumPad2,Key.NumPad3……形式。数字小键盘上的“+”用Key.NumPadPlus,“-”用Key.NumPadMinus,“*”用Key.NumPadMultiply,“/”用Key.NumPadDivide,“.”用Key.NumPadDot,回车用Key.NumPadEnter。

    “`”用Key.Console,“\”用Key.Backslash,“-”用Key.Minus,“=”用Key.Equals,“[”用Key.LeftBracket,“]”用Key.RightBracket,“;”用Key.Semicolon,“'”用Key.Apostrophe,左换档键用Key.LeftShift,右换档键用Key.RightShift,“,”用Key.Comma,“.”用Key.Dot,“/”用Key.Slash,左Ctrl键用Key.LeftCtrl,左窗口键用Key.LeftWindows,左Alt键用Key.LeftAlt,空格键用Key.Space,右Alt键用Key.RightAlt,右窗口键用Key.RightWindows,应用菜单键用Key.AppMenu,右Ctrl键用Key.RightCtrl,上箭头键用Key.Up,下箭头键用Key.Down,左箭头键用Key.Left,右箭头键用Key.Right。

    有左右两键的Shift、Ctrl、Alt、Windows都可用Key.Shift,Key.Ctrl,Key.Alt,Key.Windows。

    键都可以用Key.Scan后跟十六进制键扫描码表示。例如Key.Scan5B。

    ==================================================

    鼠标

    ==================================================

    Wiimote

    Wiimote支持8个Wiimote1到Wiimote8。用Wiimote等于默认Wiimote1。

    支持除电源和同步按钮以外的所有按钮。如下:

    Wiimote.Up, Wiimote.Down, Wiimote.Left, Wiimote.Right,

    Wiimote.A, Wiimote.B,

    Wiimote.Minus, Wiimote.Home, Wiimote.Plus

    Wiimote.One, Wiimote.Two

    Wiimote的加速度测量,X轴向右,Y轴向上,Z轴向前。

    Wiimote.gx, Wiimote.gy, Wiimote.gz

    Wiimote.g的值是gx,gy,gz的集合。

    Wiimote.RawAccX, Wiimote.RawAccY, Wiimote.RawAccZ

    Wiimote.RelAccX, Wiimote.RelAccY, Wiimote.RelAccZ

    是带单位的加速度值。

    Wiimote.RawForceX,Wiimote.RawForceY,Wiimote.RawForceZ是过时的函数,只为向后兼容保留,不建议再用。RawForce可以用固定比例转换到RawAcc。RawForce=RawAcc*2.633

    旋转

    Wiimote.Pitch, Wiimote.Roll

    Wiimote.SmoothPitch, Wiimote.SmoothRoll(平滑值)

    Pitch是垂直的角度。正面向上水平放置数值是0,红外头垂直向天花板数值是90,红外头垂直向地面数值是-90。

    Roll是水平滚动角度。正面向上水平放置数值是0,向+按钮方向滚动180度数值是180,向-按钮方向滚动180度数值是-180。

    Motion Plus

    Wiimote.MotionPlus.YawSpeed    水平变动角度数值

    Wiimote.MotionPlus.PitchSpeed  垂直变动角度数值

    Wiimote.MotionPlus.RollSpeed  滚动变动角度数值

    定位条

    wiimote.dot1x, wiimote.dot1y

    wiimote.dot4x, wiimote.dot4y

    返回4个红外灯的坐标

    Wiimote.dot1vis, Wiimote.dot2vis, Wiimote.dot3vis, Wiimote.dot4vis

    返回4个红外灯点是否被看到。

    Wiimote.dot1size, Wiimote.dot2size, Wiimote.dot3size, Wiimote.dot4size

    返回4个红外灯点的大小(数值0到15之间)

    Wiimote.Leds赋值0到15之间的数,控制Wiimote上的4个LED灯亮灭。

    Wiimote.Led1, Wiimote.Led2, Wiimote.Led3, and Wiimote.Led4赋值true或false单独控制Led灯亮灭。

    Wiimote.Rumble赋值true,Wiimote力反馈开始震动。

    Wiimote.Frequency发出所赋值频率的声音。

    Wiimote.Volume赋值0到2之间数调节音量0%到200%。

    Wiimote.Speaker赋值true或false控制喇叭发声与否。

    Wiimote.Mute赋值true或false,和Speaker功能一样,只是逻辑值正好相反。

    Wiimote.SampleRate赋值采样频率。采样率必须是280的整数倍。当前GlovePIE仅支持3640Hz采样率。

    Wiimote.Battery读出电量(满电是192)。

    读Wiimote.Count的值可知正连着几个Wiimote。

    读WiimoteN.Exists的值可知WiimoteN是否连着。

    Wiimote中的存储器部分

    Wiimote.InByteString读出整个存储器的串。

    或分别读

    var.a = Wiimote.InReport

    var.b1 = Wiimote.InByte1

    ...

    var.bN = Wiimote.InByteN

    WiimotePoke([wiimote number], address, value)读Wiimote中的存储器部分

    WiimoteSend(wiimote number, report number, [p1, p2, p3…])存进存储器部分

    ==================================================

    相关文章

      网友评论

        本文标题:GlovePIE脚本语言文档的中文翻译

        本文链接:https://www.haomeiwen.com/subject/nzhjictx.html